Some applications crash on exit with nvidia 375.10

I noticed applications using Clutter or clutter-gtk crash on exit now.
This was not the case with 367.xx drivers or 370.xx
The backtraces are not useful but I managed to isolate it to totem (clutter-gtk), gnome-maps (clutter) and gthumb (clutter).
all crash in libEGL.so

Totem:

gdb) bt
#0 0x00007fd107564ed0 in ?? ()
#1 0x00007fd115d9ce89 in ?? () from /usr/lib/libEGL.so.1
#2 0x00007fd11f749a68 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
#3 0x00007fd11d9fa890 in __run_exit_handlers () from /usr/lib/libc.so.6
#4 0x00007fd11d9fa8ea in exit () from /usr/lib/libc.so.6
#5 0x00007fd11f4eb5f4 in totem_object_exit () from /usr/lib/libtotem.so.0
#6 0x00007fd11f4eb76c in main_window_destroy_cb () from /usr/lib/libtotem.so.0
#7 0x00007fd11eaa7591 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x2007fc0,
return_value=0x7ffcea205300, instance=0x1ff62c0, args=,
marshal_data=, n_params=,
param_types=0x18af070) at gtkmarshalers.c:131
#8 0x00007fd11e2a31b4 in _g_closure_invoke_va (
closure=closure@entry=0x2007fc0,
return_value=return_value@entry=0x7ffcea205300,
instance=instance@entry=0x1ff62c0, args=args@entry=0x7ffcea2053d0,
n_params=, param_types=0x18af070) at gclosure.c:867
#9 0x00007fd11e2bd381 in g_signal_emit_valist (instance=0x1ff62c0,
signal_id=, detail=0,
var_args=var_args@entry=0x7ffcea2053d0) at gsignal.c:3300
#10 0x00007fd11e2bdf9f in g_signal_emit (instance=instance@entry=0x1ff62c0,
signal_id=, detail=detail@entry=0) at gsignal.c:3447
#11 0x00007fd11ebf3cfc in gtk_widget_event_internal (widget=0x1ff62c0,
event=0x24d3b20) at gtkwidget.c:7721
—Type to continue, or q to quit—
#12 0x00007fd11eaa65eb in gtk_main_do_event (event=event@entry=0x24d3b20)
at gtkmain.c:1790
#13 0x00007fd11ec0a561 in send_delete_event (data=0x1ff62c0)
at gtkwindow.c:1321
#14 0x00007fd11ae18418 in gdk_threads_dispatch (data=0x1a0b860) at gdk.c:743
#15 0x00007fd11dfca26a in g_main_dispatch (context=0x189f9b0) at gmain.c:3203
#16 g_main_context_dispatch (context=context@entry=0x189f9b0) at gmain.c:3856
#17 0x00007fd11dfca620 in g_main_context_iterate (
context=context@entry=0x189f9b0, block=block@entry=1,
dispatch=dispatch@entry=1, self=) at gmain.c:3929
#18 0x00007fd11dfca6cc in g_main_context_iteration (
context=context@entry=0x189f9b0, may_block=may_block@entry=1)
at gmain.c:3990
#19 0x00007fd11e58404d in g_application_run (application=0x18701a0, argc=1,
argv=0x7ffcea205828) at gapplication.c:2381
#20 0x0000000000400cb8 in main ()

and gthumb:

(gdb) bt full
#0 0x00007f22c7d65ed0 in ?? ()
No symbol table info available.
#1 0x00007f22d30b6e89 in ?? () from /usr/lib/libEGL.so.1
No symbol table info available.
#2 0x00007f22db03fa68 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
No symbol table info available.
#3 0x00007f22d77b2890 in __run_exit_handlers () from /usr/lib/libc.so.6
No symbol table info available.
#4 0x00007f22d77b28ea in exit () from /usr/lib/libc.so.6
No symbol table info available.
#5 0x00007f22d779d298 in __libc_start_main () from /usr/lib/libc.so.6
No symbol table info available.
#6 0x0000000000432e1a in _start ()
No symbol table info available.

This affects KDE too, and in a more severe way. It causes the lock screen in Plasma 5.7.5 to crash on exit. Since the exit was due to a crash, something then restarts the lock screen, making it impossible to unlock without switching to a VT and using “loginctl unlock-sessions”.

I get the same with gthumb

(gdb) bt
#0  0x00007fffea009ed0 in  ()
#1  0x00007ffff366ed89 in __eglFini () at libegl.c:1283
#2  0x00007ffff7de94aa in _dl_fini () at dl-fini.c:235
#3  0x00007ffff45ae1e8 in __run_exit_handlers (status=0, listp=0x7ffff49315d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#4  0x00007ffff45ae235 in __GI_exit (status=<optimized out>) at exit.c:104
#5  0x00007ffff4595738 in __libc_start_main (main=0x555555588ea0 <main>, argc=1, argv=0x7fffffffdfc8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdfb8) at ../csu/libc-start.c:323
#6  0x0000555555588fb9 in _start ()
(gdb)

and this for totem

(gdb) bt
#0  0x00007fffdf330ed0 in  ()
#1  0x00007ffff52e4d89 in __eglFini () at libegl.c:1283
#2  0x00007ffff7de94aa in _dl_fini () at dl-fini.c:235
#3  0x00007fffefc611e8 in __run_exit_handlers (status=status@entry=0, listp=0x7fffeffe45d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#4  0x00007fffefc61235 in __GI_exit (status=status@entry=0) at exit.c:104
#5  0x00007ffff7b8a354 in totem_object_exit (totem=<optimized out>) at totem-object.c:1364
#6  0x00007ffff7b8a4cc in main_window_destroy_cb (widget=<optimized out>, event=<optimized out>, totem=<optimized out>) at totem-object.c:1370
#7  0x00007ffff1db55e1 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x555555f9e390, return_value=0x7fffffffdaa0, instance=0x555555fb2280, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555557b15a0) at gtkmarshalers.c:131
#8  0x00007ffff0523614 in _g_closure_invoke_va (closure=closure@entry=0x555555f9e390, return_value=return_value@entry=0x7fffffffdaa0, instance=instance@entry=0x555555fb2280, args=args@entry=0x7fffffffdb70, n_params=<optimized out>, param_types=0x5555557b15a0) at gclosure.c:867
#9  0x00007ffff053d8b3 in g_signal_emit_valist (instance=0x555555fb2280, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffdb70) at gsignal.c:3294
#10 0x00007ffff053e43f in g_signal_emit (instance=instance@entry=0x555555fb2280, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3441
#11 0x00007ffff1ef79fc in gtk_widget_event_internal (widget=0x555555fb2280 [GtkApplicationWindow], event=0x55555701c160) at gtkwidget.c:7731
#12 0x00007ffff1db46c1 in gtk_main_do_event (event=event@entry=0x55555701c160) at gtkmain.c:1760
#13 0x00007ffff1f0dcf1 in send_delete_event (data=0x555555fb2280) at gtkwindow.c:1320
#14 0x00007ffff18e5418 in gdk_threads_dispatch (data=0x5555559ebae0) at gdk.c:720
#15 0x00007ffff024f6ba in g_main_context_dispatch (context=0x55555579c140) at gmain.c:3154
#16 0x00007ffff024f6ba in g_main_context_dispatch (context=context@entry=0x55555579c140) at gmain.c:3769
#17 0x00007ffff024fa70 in g_main_context_iterate (context=context@entry=0x55555579c140, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#18 0x00007ffff024fb1c in g_main_context_iteration (context=context@entry=0x55555579c140, may_block=may_block@entry=1) at gmain.c:3901
#19 0x00007ffff081248d in g_application_run (application=0x5555557741a0 [TotemObject], argc=1, argv=0x7fffffffdfc8) at gapplication.c:2381
#20 0x00005555555550e8 in main (argc=<optimized out>, argv=<optimized out>) at totem.c:83
(gdb)

libglvnd info

$ ./check-libglvnd-install.sh Checking for libglvnd installation.
Checking libGLdispatch...
Checking libGLdispatch dispatch table
Checking call through libGLdispatch
All OK
libGLdispatch is OK
Checking for libGLX
libGLX is OK
Checking entrypoint library libOpenGL.so.0
Checking call through libGLdispatch
Checking call through library libOpenGL.so.0
All OK
Entrypoint library libOpenGL.so.0 is OK
Checking entrypoint library libGL.so.1
Checking call through libGLdispatch
Checking call through library libGL.so.1
All OK
Entrypoint library libGL.so.1 is OK
libglvnd appears to be installed.

nvidia-bug-report.log.gz (227 KB)

I’m getting this behavior with the new drivers on Plasma 5.8.2 (Debian sid) as well. Version 370.28 definitely didn’t have this problem.

gdb backtrace of the crashed screenlocker process:

Thread 1 "kscreenlocker_g" received signal SIGSEGV, Segmentation fault.
__GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:67
67	../nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) bt
#0  __GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:67
#1  0x00007f19f9b53e1c in ?? () from /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#2  0x00007f19f9b2adc8 in ?? () from /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#3  0x00007f19f134ce89 in ?? () from /usr/lib/x86_64-linux-gnu/libEGL.so.1
#4  0x00007f1a13aafbc8 in _dl_fini () at dl-fini.c:240
#5  0x00007f1a107cc920 in __run_exit_handlers (status=0, listp=0x7f1a10b2f5d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:83
#6  0x00007f1a107cc97a in __GI_exit (status=<optimized out>) at exit.c:105
#7  0x00007f1a107b72b8 in __libc_start_main (main=0x408a50, argc=6, argv=0x7ffc9e836fd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc9e836fc8) at ../csu/libc-start.c:325
#8  0x000000000040944a in _start ()

EDIT: Getting a similar issue with another helper process of some sort when trying to log out from Plasma, which causes the log out to be aborted. This is the KDE crash handler’s report:

Application: ksmserver-logout-greeter (ksmserver-logout-greeter), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[KCrash Handler]
#6  __GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:67
#7  0x00007f255dee5e1c in ?? () from /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#8  0x00007f255debcdc8 in ?? () from /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#9  0x00007f2555559e89 in ?? () from /usr/lib/x86_64-linux-gnu/libEGL.so.1
#10 0x00007f25745d2bc8 in _dl_fini () at dl-fini.c:240
#11 0x00007f25710ad920 in __run_exit_handlers (status=0, listp=0x7f25714105d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:83
#12 0x00007f25710ad97a in __GI_exit (status=<optimized out>) at exit.c:105
#13 0x00007f25710982b8 in __libc_start_main (main=0x405510, argc=6, argv=0x7ffc6f017768, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc6f017758) at ../csu/libc-start.c:325
#14 0x00000000004059fa in _start ()

nvidia-bug-report.log.gz (123 KB)

‘gtk3-demo --run=glarea’ also crashes when exiting gtk3-demo completely.

Thread 4 (Thread 0x7fffeb143700 (LWP 21737)):
#0  0x00007ffff4fecba9 in syscall () from /usr/lib/libc.so.6
#1  0x00007ffff5553d7a in g_cond_wait_until (cond=cond@entry=0x7df958, 
    mutex=mutex@entry=0x7df950, end_time=end_time@entry=43998788509)
    at gthread-posix.c:1442
#2  0x00007ffff54e2e89 in g_async_queue_pop_intern_unlocked (queue=0x7df950, 
    wait=wait@entry=1, end_time=43998788509) at gasyncqueue.c:422
#3  0x00007ffff54e34e8 in g_async_queue_timeout_pop_unlocked (
    queue=<optimized out>, timeout=timeout@entry=500000) at gasyncqueue.c:570
#4  0x00007ffff5536876 in g_thread_pool_wait_for_new_task (
    pool=<optimized out>) at gthreadpool.c:262
#5  g_thread_pool_thread_proxy (data=<optimized out>) at gthreadpool.c:296
#6  0x00007ffff5535ea5 in g_thread_proxy (data=0xae5280) at gthread.c:784
#7  0x00007ffff52ae404 in start_thread () from /usr/lib/libpthread.so.0
#8  0x00007ffff4ff146f in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7fffebf51700 (LWP 21736)):
#0  0x00007ffff4fe812d in poll () from /usr/lib/libc.so.6
#1  0x00007ffff550e5b6 in g_main_context_poll (priority=<optimized out>, 
    n_fds=2, fds=0x7fffdc0010c0, timeout=<optimized out>, context=0x7e02b0)
    at gmain.c:4228
#2  g_main_context_iterate (context=0x7e02b0, block=block@entry=1, 
---Type <return> to continue, or q <return> to quit---
    dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924
#3  0x00007ffff550e942 in g_main_loop_run (loop=0x7e0240) at gmain.c:4125
#4  0x00007ffff6adde16 in gdbus_shared_thread_func (user_data=0x7e0280)
    at gdbusprivate.c:247
#5  0x00007ffff5535ea5 in g_thread_proxy (data=0x7cb540) at gthread.c:784
#6  0x00007ffff52ae404 in start_thread () from /usr/lib/libpthread.so.0
#7  0x00007ffff4ff146f in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fffec752700 (LWP 21735)):
#0  0x00007ffff4fe812d in poll () from /usr/lib/libc.so.6
#1  0x00007ffff550e5b6 in g_main_context_poll (priority=<optimized out>, 
    n_fds=1, fds=0x7fffe40008c0, timeout=<optimized out>, context=0x7dfa90)
    at gmain.c:4228
#2  g_main_context_iterate (context=context@entry=0x7dfa90, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at gmain.c:3924
#3  0x00007ffff550e6cc in g_main_context_iteration (context=0x7dfa90, 
    may_block=may_block@entry=1) at gmain.c:3990
#4  0x00007ffff550e711 in glib_worker_main (data=<optimized out>)
    at gmain.c:5783
#5  0x00007ffff5535ea5 in g_thread_proxy (data=0x7cb4f0) at gthread.c:784
#6  0x00007ffff52ae404 in start_thread () from /usr/lib/libpthread.so.0
#7  0x00007ffff4ff146f in clone () from /usr/lib/libc.so.6
---Type <return> to continue, or q <return> to quit---

Thread 1 (Thread 0x7ffff7f2c980 (LWP 21731)):
#0  0x00007fffe9ea7ed0 in ?? ()
#1  0x00007ffff1229e89 in ?? () from /usr/lib/libEGL.so.1
#2  0x00007ffff7de9a68 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
#3  0x00007ffff4f3e890 in __run_exit_handlers () from /usr/lib/libc.so.6
#4  0x00007ffff4f3e8ea in exit () from /usr/lib/libc.so.6
#5  0x00007ffff4f29298 in __libc_start_main () from /usr/lib/libc.so.6
#6  0x0000000000415e3a in _start ()

I have reports of this issue as well. It’s stopping uploading 375.10 to Debian.

Any news from the devs?

Since it was reported on a Saturday, it will probably take till Monday at least for Nvidia developers to see the thread.

KDE’s shutdown/restart function “ksmserver-logout-greeter” is also affected and crashes.
it may have something to do with this:
https://devtalk.nvidia.com/default/topic/973013/linux/libegl-so-1-libegl-so-375-10-difference-not-in-release-notes-docs/

Fixed in libglvnd

https://github.com/NVIDIA/libglvnd/pull/105

please see https://devtalk.nvidia.com/default/topic/973013/linux/libegl-so-1-libegl-so-375-10-difference-not-in-release-notes-docs/

if the driver is installed with the option “–no-glvnd-egl-client” then the KDE tools do not crash any more.