Tại sao khóa ánh sáng giữ cho màn hình đen sau khi mở khóa?


11

Máy được vá hoàn toàn Xubfox 16.04 với người dùng mới tạo sẽ không cho phép tôi mở khóa sau khi sử dụng khóa ánh sáng để khóa màn hình của tôi (bất kể khóa được kích hoạt thủ công hay hết thời gian chờ). Các màn hình vẫn đen (nhưng trợ) về nhập đúng mật khẩu

Giết khóa ánh sáng từ tty1 sẽ tiết lộ máy tính để bàn sau đó (và do đó ngăn chặn khóa tiếp theo).

Các bước đã thử:

  • khóa được bật / tắt trong cài đặt khóa sáng & trong cài đặt nguồn (không thay đổi)
  • sử dụng xscreenaver thay vì light-locker (hoạt động)
  • đã kiểm tra nếu sự cố liên quan đến việc treo hoặc đóng nắp (không phải vậy)
    • tuy nhiên, sau khi tạm dừng, màn hình đen sẽ hiển thị This session is locked: You will be redirected to the unlock dialog automatically in a few secondsthông báo - không có bất kỳ chuyển hướng nào diễn ra
  • purged + cài đặt lại lightdm, lock-lock và xubfox-default-settings
  • sử dụng loginctl unlock-sessionkhông có tác dụng
  • systemctl status lightdm chỉ tiết lộ (vô hại, dự kiến) thông tin về mô-đun kwallet pam bị thiếu
  • đã kiểm tra nhật ký dpkg để nâng cấp giữa "nó hoạt động" và "nó không hoạt động nữa" (không có gì đáng nghi) và đã khởi động kernel trước đó (vấn đề vẫn còn)
  • So sánh hành vi giữa khóa ánh sáng khởi tạo phiên và bắt đầu một cách thủ công (không có sự khác biệt)
  • đã thêm người dùng vào nhóm nopasswdloginnhóm (màn hình đen sau đó xảy ra ngay sau khi khóa, không chỉ sau khi nhập mật khẩu)

Những bước bổ sung nào có thể chứng minh hữu ích trong việc tìm ra cách khắc phục điều này?

Nhật ký gỡ lỗi:

$ 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

Khác với điều này mang lại một hệ thống tốt mang lại:

$ 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]

Và thực sự, một cái gì đó dường như rất khó xử về thiết lập phiên:

$ loginctl session-status
Could not get properties: No such process

1
Hừ! Bạn sẽ thấy rằng giải pháp duy nhất là của tôi và đó là sử dụng xscreenaver và xóa khóa ánh sáng
Fabby

2
Bạn đã từng cố gắng khởi chạy light-lockerbằng cách sử dụng tùy chọn gỡ lỗi được đề cập trong trang man chưa? manpages.ubfox.com/manpages/xenial/man1/light-locker.1.html
Elder Geek

1
@anx tiền thưởng của bạn sẽ bị mất trong 5 giờ ... muốn tôi viết lại câu trả lời ban đầu của mình không? Đó không phải là điều bạn muốn, nhưng lúc đó tôi cũng gặp vấn đề tương tự, mất nhiều giờ và chỉ đến xscreenaver (và vui vẻ với nó)
Fabby

tốt, bạn đã có 15 tiền thưởng của bạn đã trở lại! Câu trả lời của bạn tốt hơn câu hỏi của tôi, câu hỏi của bạn cũng vậy, vì vậy hãy nâng cao cả hai!
Fabby

Câu trả lời:


6

TL; DR: khóa ánh sáng giữ cho màn hình đen nếu systemd không thể đọc / Proc

  • light-lockerphụ thuộc vào dbusviệc cung cấp IPC.
  • dbusphụ thuộc vào systemd-logindviệc cung cấp sessionthông tin.
  • systemd-logindphụ thuộc vào /procviệc cung cấp processthông tin.

Có nghĩa là điều này sẽ không làm việc rất tốt với nhau:

$ file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd
$ mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime,hidepid=2,gid=1337)

Và không ai có thể mong đợi:

hidepid không thực sự tương thích với systemd. lấy làm tiếc. [..] Dù sao, đóng cửa vì điều này không phải do systemd. - Lennart Poettering

Giải pháp từng phần 1

Giải pháp một phần , bởi vì nó đi kèm với công bố thông tin.

Cho phép các chương trình không có đặc quyền (như systemd, sau khi bỏ đặc quyền) để truy cập thông tin xử lý của người dùng khác /proc.

$ sudo mount -o remount,hidepid=0 /proc
 # and fix /etc/fstab accordingly

Giải pháp từng phần 2

Giải pháp một phần , bởi vì systemd có thể bị hỏng ở những nơi khác, không chỉ logind.

Thêm systemd-logind vào nhóm thích hợp, đạt được thuận tiện nhất bằng cách thêm dịch vụ Drop-In.

$ addgroup showpid
$ adduser myuser showpid
$ sudo mount -o remount,hidepid=2,gid=showpid /proc
 # and fix /etc/fstab accordingly
$ echo -e '[Service]\nSupplementaryGroups=showpid' | sudo tee /etc/systemd/system/systemd-logind.service.d/10-showpid.conf
$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-logind

Sau một trong hai giải pháp, Got session-id: (null)tin nhắn sẽ trông giống hơn Got session-id: /org/freedesktop/login1/c7và khóa nhẹ sẽ có thể giao tiếp đúng cách dbus.


Tôi nên làm gì để tìm ra cách này nhanh hơn?

  • Nếu có gì đó thay đổi và bạn không thể nhanh chóng tìm ra những gì đã thay đổi, chỉ cần lấy bản sao lưu đã có và diff -ruiNtoàn bộ hệ thống.
  • Tài liệu lần đầu tiên xảy ra sự cố chính xác hơn, do đó, sắp xếp các báo cáo logfiles / IDS theo thời gian sẽ nhanh chóng tiết lộ nguyên nhân có liên quan.
  • Nộp thêm báo cáo lỗi. Các ứng dụng âm thầm bị lỗi trong các điều kiện mà sau này sẽ gây ra đau đầu và / hoặc khóa hệ thống là không thể chấp nhận được.

Vì vậy, bạn đã nộp một số báo cáo lỗi về điều này?
jarno
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.