Page MenuHomePhabricator

enlightenment is nonresponsive after entering password on lock screen
Closed, ResolvedPublic

Description

The title pretty much sums this one up. Enlightenment is mostly unresponsive after entering my password on the lock screen (whether from idle time exceeded or when resuming from suspend). It just says Authenticating and doesn't unlock the screen. Using killall -11 causes Enlightenment to crash and display the WBOD, but then I can get back into my session.

Name : enlightenment-git
Version : 0.21.99.23141.g28ff20915-1
Build Date : Mon 09 Oct 2017 11:21:18 AM EDT
Install Date : Mon 09 Oct 2017 11:21:25 AM EDT

Name : efl-git
Version : 1.20.99.55724.g49779d26c4-1
Build Date : Wed 11 Oct 2017 07:41:48 PM EDT
Install Date : Thu 12 Oct 2017 12:43:50 AM EDT

Name : nvidia
Version : 387.12-1
Build Date : Tue 03 Oct 2017 08:27:07 PM EDT
Install Date : Tue 10 Oct 2017 11:15:10 PM EDT

Here's the backtrace, if it's any help.

[12:45:06 yomi@xana ~] » coredumpctl gdb 26575
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages.
      Pass -q to turn off this notice.
           PID: 26575 (enlightenment)
           UID: 1000 (yomi)
           GID: 1000 (yomi)
        Signal: 11 (SEGV)
     Timestamp: Wed 2017-10-11 20:48:23 EDT (3h 56min ago)
  Command Line: /usr/bin/enlightenment
    Executable: /usr/bin/enlightenment
 Control Group: /user.slice/user-1000.slice/session-c2.scope
          Unit: session-c2.scope
         Slice: user-1000.slice
       Session: c2
     Owner UID: 1000 (yomi)
       Boot ID: 06d4ed5f7c5643e29341b7c435b066d5
    Machine ID: f73e93701133416ca14519c0360b7bfb
      Hostname: xana
       Storage: /var/lib/systemd/coredump/core.enlightenment.1000.06d4ed5f7c5643e29341b7c435b066d5.26575.1507769303000000.lz4
       Message: Process 26575 (enlightenment) of user 1000 dumped core.

                Stack trace of thread 26575:
                #0  0x00007fb7ccbf0f86 n/a (libnvidia-eglcore.so.387.12)
                #1  0x00007fb7cc7b5649 n/a (libnvidia-eglcore.so.387.12)
                #2  0x00007fb7cc8171d0 n/a (libnvidia-eglcore.so.387.12)
                #3  0x00007fb7cc82dc79 n/a (libnvidia-eglcore.so.387.12)
                #4  0x00007fb7ccbd851e n/a (libnvidia-eglcore.so.387.12)
                #5  0x00007fb7ccb9cc6d n/a (libnvidia-eglcore.so.387.12)
                #6  0x00007fb7ccbb7f53 n/a (libnvidia-eglcore.so.387.12)
                #7  0x00007fb7cd82406d n/a (libGLESv2_nvidia.so.2)
                #8  0x00007fb7cef538ca n/a (libEGL_nvidia.so.0)
                #9  0x00007fb7cef4e18b n/a (libEGL_nvidia.so.0)
                #10 0x00007fb7cf004298 n/a (libEGL_nvidia.so.0)
                #11 0x00007fb7cf0026e2 n/a (libEGL_nvidia.so.0)
                #12 0x00007fb7cf002926 n/a (libEGL_nvidia.so.0)
                #13 0x00007fb7cf002991 n/a (libEGL_nvidia.so.0)
                #14 0x00007fb7cef44e22 n/a (libEGL_nvidia.so.0)
                #15 0x00007fb7cf01bf01 n/a (libEGL_nvidia.so.0)
                #16 0x00007fb7e9481488 __run_exit_handlers (libc.so.6)
                #17 0x00007fb7e94814da exit (libc.so.6)
                #18 0x00007fb7e4c4b7a8 _XIOError (libX11.so.6)
                #19 0x00007fb7e4c497e3 _XReply (libX11.so.6)
                #20 0x00007fb7cecfb428 n/a (libnvidia-glsi.so.387.12)
                #21 0x00007fb7ceced26e n/a (libnvidia-glsi.so.387.12)
                #22 0x00007fb7ccbba8d8 n/a (libnvidia-eglcore.so.387.12)
                #23 0x00007fb7ccb9f96d n/a (libnvidia-eglcore.so.387.12)
                #24 0x00007fb7ccb9fe0e n/a (libnvidia-eglcore.so.387.12)
                #25 0x00007fb7ccc3362b n/a (libnvidia-eglcore.so.387.12)
                #26 0x00007fb7ccc33ede n/a (libnvidia-eglcore.so.387.12)
                #27 0x00007fb7ccbd4f2a n/a (libnvidia-eglcore.so.387.12)
                #28 0x00007fb7ccbb8e20 n/a (libnvidia-eglcore.so.387.12)
                #29 0x00007fb7ccbb9698 n/a (libnvidia-eglcore.so.387.12)
                #30 0x00007fb7cd826dbe n/a (libGLESv2_nvidia.so.2)
                #31 0x00007fb7ceffdec8 n/a (libEGL_nvidia.so.0)
                #32 0x00007fb7ceffe91c n/a (libEGL_nvidia.so.0)
                #33 0x00007fb7ceffe963 n/a (libEGL_nvidia.so.0)
                #34 0x00007fb7cef5b40e n/a (libEGL_nvidia.so.0)
                #35 0x00007fb7d88b2b00 eng_outbuf_flush (module.so)
                #36 0x00007fb7ebdbcfe4 eng_output_flush (libevas.so.1)
                #37 0x00007fb7ebcf7da7 evas_render_updates_internal (libevas.so.1)
                #38 0x00007fb7ebcf8653 evas_render_updates_internal_wait (libevas.so.1)
                #39 0x00007fb7ebcf92fc _evas_canvas_render_updates (libevas.so.1)
                #40 0x00007fb7ebc7e4ee evas_canvas_render_updates (libevas.so.1)
                #41 0x00007fb7d8ac2365 _ecore_evas_x_render (module.so)
                #42 0x00007fb7ea9f98cd _ecore_evas_idle_enter (libecore_evas.so.1)
                #43 0x00007fb7ecb6de3f _ecore_call_task_cb (libecore.so.1)
                #44 0x00007fb7e6baeaff _event_callback_call (libeo.so.1)
                #45 0x00007fb7e6ba921e efl_event_callback_call (libeo.so.1)
                #46 0x00007fb7ecb71af6 _ecore_main_loop_iterate_internal (libecore.so.1)
                #47 0x00007fb7ecb72207 ecore_main_loop_begin (libecore.so.1)
                #48 0x00005629bbb57a4f main (enlightenment)
                #49 0x00007fb7e946af6a __libc_start_main (libc.so.6)
                #50 0x00005629bbb588ba _start (enlightenment)

                Stack trace of thread 26576:
                #0  0x00007fb7ed20670c __lll_lock_wait (libpthread.so.0)
                #1  0x00007fb7ed209397 __lll_lock_elision (libpthread.so.0)
                #2  0x00007fb7ed42fd3c eina_lock_take (libeina.so.1)
                #3  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #4  0x00007fb7e954024f __clone (libc.so.6)

                Stack trace of thread 26579:
                #0  0x00007fb7ed205cc6 do_futex_wait.constprop.1 (libpthread.so.0)
                #1  0x00007fb7ed205db8 __new_sem_wait_slow.constprop.0 (libpthread.so.0)
                #2  0x00007fb7ed45e788 eina_semaphore_lock (libeina.so.1)
                #3  0x00007fb7ebd8c4c2 _evas_common_scale_sample_thread (libevas.so.1)
                #4  0x00007fb7ed45d9e7 _eina_internal_call (libeina.so.1)
                #5  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #6  0x00007fb7e954024f __clone (libc.so.6)

                Stack trace of thread 26592:
                #0  0x00007fb7e95403b6 epoll_pwait (libc.so.6)
                #1  0x00007fb7ecb67789 _timer_tick_core (libecore.so.1)
                #2  0x00007fb7ecb8b86c _ecore_direct_worker (libecore.so.1)
                #3  0x00007fb7ed45d9e7 _eina_internal_call (libeina.so.1)
                #4  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #5  0x00007fb7e954024f __clone (libc.so.6)

                Stack trace of thread 26618:
                #0  0x00007fb7e9537b83 __select (libc.so.6)
                #1  0x00005629bbc22ba4 e_powersave_sleeper_sleep (enlightenment)
                #2  0x00007fb7c1dd0699 _temperature_check_main (module.so)
                #3  0x00007fb7ecb8b86c _ecore_direct_worker (libecore.so.1)
                #4  0x00007fb7ed45d9e7 _eina_internal_call (libeina.so.1)
                #5  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #6  0x00007fb7e954024f __clone (libc.so.6)

                Stack trace of thread 26643:
                #0  0x00007fb7e9537b83 __select (libc.so.6)
                #1  0x00005629bbc22ba4 e_powersave_sleeper_sleep (enlightenment)
                #2  0x00007fb7ca0b2755 _cpufreq_cb_frequency_check_main (module.so)
                #3  0x00007fb7ecb8b86c _ecore_direct_worker (libecore.so.1)
                #4  0x00007fb7ed45d9e7 _eina_internal_call (libeina.so.1)
                #5  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #6  0x00007fb7e954024f __clone (libc.so.6)

                Stack trace of thread 26578:
                #0  0x00007fb7ed20338d pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007fb7ebd966f5 eina_condition_wait (libevas.so.1)
                #2  0x00007fb7ed45d9e7 _eina_internal_call (libeina.so.1)
                #3  0x00007fb7ed1fd08a start_thread (libpthread.so.0)
                #4  0x00007fb7e954024f __clone (libc.so.6)

GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/enlightenment...Reading symbols from /usr/lib/debug/usr/bin/enlightenment.debug...done.
done.
[New LWP 26575]
[New LWP 26576]
[New LWP 26579]
[New LWP 26592]
[New LWP 26618]
[New LWP 26643]
[New LWP 26578]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/usr/bin/enlightenment'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fb7ccbf0f86 in ?? () from /usr/lib/libnvidia-eglcore.so.387.12
[Current thread is 1 (Thread 0x7fb7edfb3600 (LWP 26575))]
(gdb) bt
#0  0x00007fb7ccbf0f86 in  () at /usr/lib/libnvidia-eglcore.so.387.12
#1  0x00007fb7cc7b5649 in  () at /usr/lib/libnvidia-eglcore.so.387.12
#2  0x00007fb7cc8171d0 in  () at /usr/lib/libnvidia-eglcore.so.387.12
#3  0x00007fb7cc82dc79 in  () at /usr/lib/libnvidia-eglcore.so.387.12
#4  0x00007fb7ccbd851e in  () at /usr/lib/libnvidia-eglcore.so.387.12
#5  0x00007fb7ccb9cc6d in  () at /usr/lib/libnvidia-eglcore.so.387.12
#6  0x00007fb7ccbb7f53 in  () at /usr/lib/libnvidia-eglcore.so.387.12
#7  0x00007fb7cd82406d in  () at /usr/lib/libGLESv2_nvidia.so.2
#8  0x00007fb7cef538ca in  () at /usr/lib/libEGL_nvidia.so.0
#9  0x00007fb7cef4e18b in  () at /usr/lib/libEGL_nvidia.so.0
#10 0x00007fb7cf004298 in  () at /usr/lib/libEGL_nvidia.so.0
#11 0x00007fb7cf0026e2 in  () at /usr/lib/libEGL_nvidia.so.0
#12 0x00007fb7cf002926 in  () at /usr/lib/libEGL_nvidia.so.0
#13 0x00007fb7cf002991 in  () at /usr/lib/libEGL_nvidia.so.0
#14 0x00007fb7cef44e22 in  () at /usr/lib/libEGL_nvidia.so.0
#15 0x00007ffc3d23e800 in  ()
#16 0x00007fb7cf01bf01 in  () at /usr/lib/libEGL_nvidia.so.0
#17 0x00007ffc3d23e800 in  ()
#18 0x00007fb7ede10c13 in _dl_fini () at /lib64/ld-linux-x86-64.so.2
(gdb)
abyomi0 created this task.Oct 11 2017, 9:56 PM
abyomi0 updated the task description. (Show Details)Oct 11 2017, 10:01 PM
zmike added a subscriber: raster.Oct 12 2017, 5:28 AM

This seems familiar

abyomi0 updated the task description. (Show Details)Oct 13 2017, 11:43 AM

the backtrace says there was an x io error there inside gl... what process i this. by this i mean is it enlightenment main wm or the forked child process that is doing the auth?

systemd(1)---lightdm(14548)---lightdm(14615)---enlightenment_s(14628)-+-enlightenment(7766)-+-enlightenment_t(7900)-+-{enlightenment_t}(7901)
                                                                      |                     |                       |-{enlightenment_t}(7902)
                                                                      |                     |                       `-{enlightenment_t}(7903)
                                                                      |                     |-{enlightenment}(7767)
                                                                      |                     |-{enlightenment}(7769)
                                                                      |                     |-{enlightenment}(7770)
                                                                      |                     |-{enlightenment}(7777)
                                                                      |                     |-{enlightenment}(7816)
                                                                      |                     `-{enlightenment}(7846)
                                                                      `-{enlightenment_s}(14640)

thats a lot of enlightenment child processes... a lot... how? .... can you gdb attach to those (gdb enlightenment PID) and get bt's from those?

thats a lot of enlightenment child processes... a lot... how? .... can you gdb attach to those (gdb enlightenment PID) and get bt's from those?

ptrace: operation not permitted.

all of them? enlightenment itself will do this.... but all of them doing this?

all of them? enlightenment itself will do this.... but all of them doing this?

I got backtraces from the process that allowed it.

hmm those aren't bt's from the mainloop or main thread... those are child worker threads... are you sure these are PROCESSES, not threads? i'm not sure you do have a lot of enlightenment processes... just threads.

if you want to gdb attach to the enlightenment PROCESS, then you need to tell enlightenment_start to stop tracing e (that's how it monitors e for crashes). you do this by:

killall -USR1 enlightenment_start

once you do that then you can gdb attach to enlightenment and grab whatever info you like.

abyomi0 added a comment.EditedOct 29 2017, 8:45 AM

I later recomplied Enlightenment without optimization, but the backtrace I got afterwards looks nothing like the one I uploaded. So the one here is the one with optimization.

ok - that backtrace shows e hung inside nvidia's drivers. that's a hang there? the nvidia driver just has stalled (we have no idea what - we never will because it's binary and you'll have to ask nvidia to tell you).

ok - that backtrace shows e hung inside nvidia's drivers. that's a hang there? the nvidia driver just has stalled (we have no idea what - we never will because it's binary and you'll have to ask nvidia to tell you).

Yeah, seems like it something nVidida's driver is doing. I'm testing with Intel and E unlocks just fine.

i wonder if it's something in the nvidia driver that due to fork() causes the forked child to do things with atexit() that cause the parent process to hang. i suspect this is not a use case that nvidia test...

just an idea. can you, in e_auth.c in e's src in the e_auth_begin() function at the end of the file... replace exit() functions with _exit() (the extra _ at the front). this will prevent atexit handlers from being called. it may work around the driver issues above.

just an idea. can you, in e_auth.c in e's src in the e_auth_begin() function at the end of the file... replace exit() functions with _exit() (the extra _ at the front). this will prevent atexit handlers from being called. it may work around the driver issues above.

Replacing exit() with _exit() seems to work. I can now unlock E while using nVidia.

hmm. ok. so it is an nvidia atexit() handler i'm almost 100% sure and nvidia is managing to lock out the parent process somehow at exit.