लाइट-लॉकर अनलॉक के बाद स्क्रीन को काला क्यों रखता है?


11

एक Xubuntu 16.04 पूरी तरह से नए सिरे से बनाए गए उपयोगकर्ता के साथ पूरी तरह से पैच वाली मशीन है जो मुझे मेरी स्क्रीन लॉक करने के लिए लाइट-लॉकर का उपयोग करने के बाद अनलॉक करने देती है (भले ही लॉक मैन्युअल रूप से या टाइमआउट के माध्यम से सक्रिय हो)। स्क्रीन काली रहता है सही पासवर्ड प्रवेश पर (लेकिन संचालित)

Tty1 से लाइट-लॉकर को मारना डेस्कटॉप को प्रकट करेगा (और परिणामस्वरूप आगे लॉकिंग को रोकता है)।

प्रयास किए गए चरण:

  • प्रकाश-लॉकर सेटिंग्स में और बिजली सेटिंग्स में सक्षम / अक्षम लॉक (कोई परिवर्तन नहीं)
  • प्रकाश-लॉकर (कार्यों) के बजाय xscreensaver का उपयोग किया
  • यदि समस्या सस्पेंड या बंद ढक्कन से संबंधित है तो परीक्षण किया गया है (यह नहीं है)
    • हालांकि, काली स्क्रीन को निलंबित करने के बाद This session is locked: You will be redirected to the unlock dialog automatically in a few secondsसंदेश प्रकट होता है - बिना किसी पुनर्निर्देशन के
  • purged + पुनर्स्थापित किया गया lightdm, light-locker और xubuntu-default-settings
  • उपयोग loginctl unlock-sessionका कोई प्रभाव नहीं है
  • systemctl status lightdm केवल पता चलता है (हानिरहित, अपेक्षित) क्वाटलेट पाम मॉड्यूल के बारे में संदेश गायब हैं
  • "यह काम किया" और "यह किसी भी अधिक काम नहीं करता है" (कोई भी संदिग्ध नहीं है) और पिछले कर्नेल को बूट करने के बीच dpkg लॉग की जांच की गई (समस्या बनी हुई है)
  • सत्र-आरंभ किए गए प्रकाश-लॉकर के बीच तुलनात्मक व्यवहार और मैन्युअल रूप से शुरू किया गया एक (कोई अंतर नहीं)
  • उपयोगकर्ता को समूह nopasswdloginसमूह में जोड़ा गया (काली स्क्रीन लॉक करने के ठीक बाद होती है, न कि केवल पासवर्ड दर्ज करने के बाद)

कैसे अतिरिक्त कदम यह पता लगाने में उपयोगी साबित हो सकता है कि इसे कैसे ठीक किया जाए?

डिबगिंग लॉग:

$ 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

एक ज्ञात-अच्छी प्रणाली पैदावार के लिए यह मुश्किल:

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

और वास्तव में, कुछ सत्र सेटअप के बारे में बहुत अजीब प्रतीत होता है:

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

1
हा! आप पाएंगे कि एकमात्र समाधान मेरा है और यह कि xscreensaver का उपयोग करना है और लाइट-लॉकर को हटाना है
Fabby

2
क्या आपने light-lockerमैन पेज में उल्लिखित डिबग विकल्प का उपयोग करने का प्रयास किया है? manpages.ubuntu.com/manpages/xenial/man1/light-locker.1.html
एल्डर गीक

1
@ क्या आपका इनाम 5 घंटे में खत्म हो जाएगा ... मैं अपने मूल उत्तर को दोहराना चाहता हूं ? यह वह नहीं है जो आप चाहते हैं, लेकिन मुझे उस समय एक ही समस्या थी, कई घंटे खो दिए और बस xscreensaver चला गया (और इसके साथ मज़े किया)
Fabby

ठीक है, आप अपने इनाम के 15 पहले से ही वापस मिल गया है! आपका उत्तर मेरे से बेहतर है, इसलिए आपका प्रश्न है, इसलिए दोनों ने उत्थान किया है!
फेबी

जवाबों:


6

TL; DR: लाइट-लॉकर स्क्रीन को काला रखता है अगर सिस्टमड / पढ़ नहीं सकता है

  • light-lockerdbusप्रदान करने पर निर्भर करता है IPC
  • dbusजानकारी systemd-logindदेने पर निर्भर करता है session
  • systemd-logindजानकारी /procदेने पर निर्भर करता है process

मतलब यह बहुत अच्छी तरह से एक साथ काम नहीं करेगा:

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

और न ही उम्मीद की जा सकती है:

Hidepid वास्तव में systemd के साथ संगत नहीं है। माफ़ करना। [..] वैसे भी, यह सिस्टमड के कारण बंद नहीं था। - लेनार्ट पोइटरिंग

आंशिक समाधान 1

आंशिक समाधान, क्योंकि यह जानकारी के प्रकटीकरण के साथ आता है।

अन्य उपयोगकर्ताओं को जानकारी संसाधित करने के लिए अनप्लिविज्ड प्रोग्राम (जैसे सिस्टमड, विशेषाधिकारों को छोड़ने के बाद) की अनुमति दें /proc

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

आंशिक समाधान 2

आंशिक समाधान, क्योंकि सिस्टमड अन्य स्थानों में टूट सकता है, न कि केवल लॉगइंड।

उचित समूह में systemd-logind जोड़ें, सबसे आसानी से एक सेवा ड्रॉप-इन जोड़कर हासिल किया गया।

$ 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

या तो समाधान के बाद , Got session-id: (null)संदेश को अधिक देखना चाहिए Got session-id: /org/freedesktop/login1/c7और प्रकाश-लॉकर के माध्यम से ठीक से संवाद करने में सक्षम होगा dbus


मुझे क्या करना चाहिए था इस तरह से तेजी से आंकड़ा?

  • यदि कुछ बदल गया है, और आप जल्दी से पता नहीं लगा सकते हैं कि क्या बदल गया है, तो पहले से ही बैकअप और diff -ruiNपूरे सिस्टम को पकड़ो ।
  • दस्तावेज़ पहली बार एक समस्या को और अधिक सटीक रूप से हल करता है, इसलिए समय से लॉगफ़ाइल्स / आईडीएस रिपोर्ट को छांटने से प्रासंगिक कारण का पता चल जाएगा।
  • अधिक बग रिपोर्ट दर्ज करें। उन शर्तों के तहत चुपचाप विफल रहने वाले अनुप्रयोग जो बाद में सिरदर्द का कारण बनेंगे और / या सिस्टम लॉकअप अस्वीकार्य है।

तो क्या आपने इसके बारे में कुछ बग रिपोर्ट दर्ज की है?
जारो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.