Una máquina completamente parcheada Xubuntu 16.04 con un usuario recién creado no me permitirá desbloquear después de usar el bloqueador de luz para bloquear mi pantalla (independientemente de si el bloqueo se activó manualmente o por tiempo de espera). La pantalla permanece negra (pero encendida) al ingresar la contraseña correcta
Matar el bloqueador de luz de tty1 revelará el escritorio en ese momento (y, en consecuencia, evita un mayor bloqueo).
Pasos intentados:
- bloqueo habilitado / deshabilitado en la configuración del casillero de luz y en la configuración de energía (sin cambios)
- usó xscreensaver en lugar de light-locker (funciona)
- probado si el problema está relacionado con suspender o cerrar la tapa (no lo está)
- sin embargo, después de suspender, la pantalla negra revela el
This session is locked: You will be redirected to the unlock dialog automatically in a few seconds
mensaje, sin que se produzca ninguna redirección
- sin embargo, después de suspender, la pantalla negra revela el
- purgado + reinstalado lightdm, light-locker y xubuntu-default-settings
- el uso
loginctl unlock-session
no tiene efecto systemctl status lightdm
solo revela mensajes (inofensivos, esperados) sobre la falta del módulo kwallet pam- examinó el registro dpkg para ver si había actualizaciones entre "funcionó" y "ya no funciona" (nada sospechoso) y arrancó el kernel anterior (el problema persiste)
- Comportamiento comparado entre el bloqueador de luz iniciado por sesión y el que se inició manualmente (sin diferencia)
- usuario agregado al grupo de
nopasswdlogin
grupo (la pantalla negra aparece justo después del bloqueo, no solo después de ingresar la contraseña)
¿Qué pasos adicionales podrían resultar útiles para descubrir cómo solucionar esto?
Registro de depuración:
$ export LC_ALL=C; light-locker --debug & ( sleep 5; echo "## Locking now"; light-locker-command --lock; sleep 10; echo "### 10 seconds have passed - entering password now"; sleep 10; echo "### 10 more seconds have passwd - Killing"; killall light-locker; sleep 5; echo "### Killed now" )
[1] 23463
[gs_debug_init] gs-debug.c:106 (00:08:32): Debugging enabled
[main] light-locker.c:142 (00:08:32): initializing light-locker 1.7.0
[main] light-locker.c:144 (00:08:32): lock after screensaver 10
[main] light-locker.c:145 (00:08:32): late locking 0
[main] light-locker.c:146 (00:08:32): lock on suspend 1
[main] light-locker.c:147 (00:08:32): lock on lid 0
[main] light-locker.c:148 (00:08:32): idle hint 1
[query_session_id] gs-listener-dbus.c:2088 (00:08:32): org.freedesktop.login1.NoSessionForPID raised:
PID 23463 does not belong to any known session
[init_session_id] gs-listener-dbus.c:2180 (00:08:32): Got session-id: (null)
[query_sd_session_id] gs-listener-dbus.c:2164 (00:08:32): Couldn't determine our own sd session id: No such process
[init_session_id] gs-listener-dbus.c:2185 (00:08:32): Got sd-session-id: (null)
[init_seat_path] gs-listener-dbus.c:2262 (00:08:32): Got seat: /org/freedesktop/DisplayManager/Seat0
[gs_listener_delay_suspend] gs-listener-dbus.c:449 (00:08:32): Delay suspend
[gs_listener_x11_acquire] gs-listener-x11.c:172 (00:08:32): ScreenSaver Registered
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:32): obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameAcquired destination=:1.316
## Locking now
[gs_grab_grab_root] gs-grab-x11.c:647 (00:08:37): Grabbing the root window
[gs_grab_get_keyboard] gs-grab-x11.c:153 (00:08:37): Grabbing keyboard widget=E3
[gs_grab_get_mouse] gs-grab-x11.c:213 (00:08:37): Grabbing mouse widget=E3
[gs_manager_create_windows_for_screen] gs-manager.c:548 (00:08:37): Creating 1 windows for screen 0
[gs_manager_create_window_for_monitor] gs-manager.c:324 (00:08:37): Creating window for monitor 0 [0,0] (1600x900)
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[gs_manager_timed_switch] gs-manager.c:445 (00:08:37): Start switch to greeter timer
[gs_window_xevent] gs-window-x11.c:369 (00:08:37): not raising our windows
[window_map_event_cb] gs-manager.c:233 (00:08:37): Handling window map_event event
[gs_listener_resume_suspend] gs-listener-dbus.c:513 (00:08:37): Resume suspend: fd=14
[manager_maybe_grab_window] gs-manager.c:204 (00:08:37): Moving grab to 0x5595f8d5a290
[gs_grab_move_keyboard] gs-grab-x11.c:450 (00:08:37): Moving keyboard grab from E3 to 3A0000C
[gs_grab_move_keyboard] gs-grab-x11.c:457 (00:08:37): *** doing X server grab
[gs_grab_release_keyboard] gs-grab-x11.c:279 (00:08:37): Ungrabbing keyboard
[gs_grab_get_keyboard] gs-grab-x11.c:153 (00:08:37): Grabbing keyboard widget=3A0000C
[gs_grab_move_keyboard] gs-grab-x11.c:479 (00:08:37): *** releasing X server grab
[gs_grab_move_mouse] gs-grab-x11.c:395 (00:08:37): Moving pointer grab from E3 to 3A0000C
[gs_grab_move_mouse] gs-grab-x11.c:402 (00:08:37): *** doing X server grab
[gs_grab_release_mouse] gs-grab-x11.c:320 (00:08:37): Ungrabbing pointer
[gs_grab_get_mouse] gs-grab-x11.c:213 (00:08:37): Grabbing mouse widget=3A0000C
[gs_grab_move_mouse] gs-grab-x11.c:425 (00:08:37): *** releasing X server grab
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:37): obj_path=/org/freedesktop/login1 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[gs_listener_send_lock_session] gs-listener-dbus.c:180 (00:08:38): Send lock session
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:38): obj_path=(null) interface=(null) method=(null) destination=:1.316
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c12 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:39): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:39): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:39): Session switched: 0
[gs_manager_stop_switch] gs-manager.c:456 (00:08:39): Stop switch to greeter timer
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c12 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/user/_108 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:39): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:39): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:39): Session switched: 0
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.login1.Session method=Lock destination=(null)
### 10 seconds have passed - entering password now
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.login1.Session method=Unlock destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c13 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:51): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:51): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:51): Session switched: 0
[xroot_filter] gs-listener-x11.c:124 (00:08:52): ScreenSaver stopped
### 10 more seconds have passwd - Killing
### Killed now
Difundir esto a un sistema bien conocido produce:
$ comm -3 <(grep -iv grab good | sed 's/[0-9:]\+/[NN]/g;s/[ \t]\+/ /g' | sort) <(grep -iv grab bad | sed 's/[0-9:]\+/[NN]/g;s/[ \t]\+/ /g' | sort) | head -n2
[init_session_id] gs-listener-dbus.c[NN] ([NN])[NN] Got session-id[NN] (null)
[init_session_id] gs-listener-dbus.c[NN] ([NN])[NN] Got session-id[NN] /org/freedesktop/login[NN]/session/c[NN]
Y, de hecho, algo parece ser muy incómodo sobre la configuración de la sesión:
$ loginctl session-status
Could not get properties: No such process
xubuntu
lightdm
lock-screen
light-locker
ansioso
fuente
fuente
light-locker
utilizando la opción de depuración mencionada en la página del manual? manpages.ubuntu.com/manpages/xenial/man1/light-locker.1.htmlRespuestas:
TL; DR: el bloqueador de luz mantiene la pantalla negra si systemd no puede leer / procesar
light-locker
Depende dedbus
proporcionarIPC
.dbus
depende desystemd-logind
proporcionarsession
información.systemd-logind
depende de/proc
proporcionarprocess
información.Lo que significa que esto no funcionará muy bien juntos:
Y tampoco se puede esperar que:
Solución parcial 1
Solución parcial , porque viene con la divulgación de información.
Permita que los programas sin privilegios (como systemd, después de quitar privilegios) accedan a la información de proceso de otros usuarios
/proc
.Solución parcial 2
Solución parcial , porque systemd podría romperse en otros lugares, no solo logind.
Agregue systemd-logind al grupo apropiado, lo que se logra más convenientemente agregando un servicio Drop-In.
Después de cualquiera de las soluciones, el
Got session-id: (null)
mensaje debería parecerse másGot session-id: /org/freedesktop/login1/c7
y el bloqueador de luz podrá comunicarse correctamente a través dedbus
.¿Qué debería haber hecho para resolver esto más rápido?
diff -ruiN
todo el sistema.fuente