Bug#968816: tilix: Library load failed (librsvg-2.so.2): ... Illegal instruction
libgtkd-3-dev should also probably pull librsvg2-dev and maybe other -dev package as well (like gtk, glib, atk, cairo, ...): cat /usr/lib/x86_64-linux-gnu/pkgconfig/gtkd-3.pc Name: GtkD Description: A D binding and OO wrapper for GTK+. Version: 3.9.0 Libs: -L-L/usr/lib/x86_64-linux-gnu/ -L-lgtkd-3 -L-ldl Cflags: -I/usr/include/d/gtkd-3/ Requires: gtk+-3.0, gdk-3.0, atk, pango, cairo, cairo-gobject, pangocairo, librsvg-2.0, gio-2.0, glib-2.0, gobject-2.0
Bug#968816: tilix: Library load failed (librsvg-2.so.2): ... Illegal instruction
reassign 968816 libgtkd-3-0 3.9.0-3 affects 968816 +tilix Thanks On Fri, 21 Aug 2020 18:38:28 +0200 Jakub Wilk wrote: > > When librsvg2-2 is not installed, tilix crashes with SIGILL: > > $ tilix > object.Exception@generated/gtkd/gtkd/Loader.d(125): Library load failed (librsvg-2.so.2): librsvg-2.so.2: cannot open shared object file: No such file or directory > Illegal instruction > This looks like a gtkd issue to me. They had the same issue in Red Hat and it was fixed in that package: https://bugzilla.redhat.com/show_bug.cgi?id=1694324 Reassigning to gtkd then
Bug#968816: tilix: Library load failed (librsvg-2.so.2): ... Illegal instruction
Dear Maintainer, my d knowledge is very limited, but it looks like a d runtime library tries to do some destructor calls at process exit. Unfortunately that tries to get a mutex lock, but that fails with EOWNERDEAD, therefore then hits the assert(0) in maybe [1]. If that assert(0) just translates in d to a "ud2" instruction. But this happens just if the build-depending library librsvg2 is not found. Looks like that build dependency does not translate to a binary package dependency, maybe because it gets dynamically loaded? Kind regards, Bernhard [1] https://sources.debian.org/src/ldc/1:1.21.0-1/runtime/druntime/src/rt/monitor_.d/#L213 (gdb) disassemble _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv Dump of assembler code for function _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv: 0xb6cd2dd0 <+0>: push %ebx 0xb6cd2dd1 <+1>: sub$0x8,%esp 0xb6cd2dd4 <+4>: call 0xb6cd2dd9 <_D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv+9> 0xb6cd2dd9 <+9>: pop%ebx 0xb6cd2dda <+10>:mov%eax,(%esp) 0xb6cd2ddd <+13>:add$0x54227,%ebx 0xb6cd2de3 <+19>:call 0xb6c86b60 0xb6cd2de8 <+24>:test %eax,%eax 0xb6cd2dea <+26>:jne0xb6cd2df1 <_D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv+33> 0xb6cd2dec <+28>:add$0x8,%esp 0xb6cd2def <+31>:pop%ebx 0xb6cd2df0 <+32>:ret => 0xb6cd2df1 <+33>:ud2 End of assembler dump. (gdb) 0xb6c045de 467 return EOWNERDEAD; 1: x/i $pc => 0xb6c045de <__pthread_mutex_lock_full+446>: ja 0xb6c044f0 <__pthread_mutex_lock_full+208> (gdb) bt #0 0xb6c045de in __pthread_mutex_lock_full (mutex=0xb6d2f480 <_D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION+4>) at ../nptl/pthread_mutex_lock.c:467 #1 0xb6cd2de8 in _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #2 0xb6cc8641 in _d_criticalenter () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #3 0xb6cd6ca6 in _staticDtor_L376_C1 () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #4 0xb6cd2344 in rt.minfo.ModuleGroup.runTlsDtors() () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #5 0xb6cd4a44 in _d_dso_registry () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #6 0xb6c886e2 in ldc.register_dso () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #7 0xb7fe626a in _dl_fini () at dl-fini.c:138 #8 0xb6a4880e in __run_exit_handlers (status=1, listp=0xb6bf63fc <__exit_funcs>, run_list_atexit=true, run_dtors=true) at exit.c:108 #9 0xb6a489e1 in __GI_exit (status=1) at exit.c:139 #10 0xb6a2fe02 in __libc_start_main (main=0x4f1230 , argc=1, argv=0xb6e4, init=0x5f2c60 <__libc_csu_init>, fini=0x5f2cc0 <__libc_csu_fini>, rtld_fini=0xb7fe6080 <_dl_fini>, stack_end=0xb6dc) at ../csu/libc-start.c:342 #11 0x004e3061 in _start ()
Bug#968816: tilix: Library load failed (librsvg-2.so.2): ... Illegal instruction
Package: tilix Version: 1.9.3-4+b2 Severity: serious When librsvg2-2 is not installed, tilix crashes with SIGILL: $ tilix object.Exception@generated/gtkd/gtkd/Loader.d(125): Library load failed (librsvg-2.so.2): librsvg-2.so.2: cannot open shared object file: No such file or directory Illegal instruction GDB says: (gdb) x/i $pc => 0xf6c61df1 <_D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv+33>: ud2 (gdb) bt #0 0xf6c61df1 in _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #1 0xf6c57641 in _d_criticalenter () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #2 0xf6c65ca6 in _staticDtor_L376_C1 () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #3 0xf6c61344 in rt.minfo.ModuleGroup.runTlsDtors() () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #4 0xf6c63a44 in _d_dso_registry () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #5 0xf6c176e2 in ldc.register_dso () from /usr/lib/i386-linux-gnu/libdruntime-ldc-shared.so.91 #6 0xf7f9626a in _dl_fini () at dl-fini.c:138 #7 0xf69d780e in __run_exit_handlers (status=1, listp=0xf6b853fc <__exit_funcs>, run_list_atexit=true, run_dtors=true) at exit.c:108 #8 0xf69d79e1 in __GI_exit (status=1) at exit.c:139 #9 0xf69bee02 in __libc_start_main (main=0x5665e230 , argc=1, argv=0xffb25e64, init=0x5675fc60 <__libc_csu_init>, fini=0x5675fcc0 <__libc_csu_fini>, rtld_fini=0xf7f96080 <_dl_fini>, stack_end=0xffb25e5c) at ../csu/libc-start.c:342 #10 0x56650061 in _start () -- System Information: Architecture: i386 Versions of packages tilix depends on: ii dconf-gsettings-backend [gsettings-backend] 0.36.0-1 ii libc62.31-3 ii libgtkd-3-0 3.9.0-3+b3 ii libphobos2-ldc-shared91 1:1.21.0-1+b1 ii libunwind8 1.3.2-2 ii libvted-3-0 3.9.0-3+b3 ii libx11-6 2:1.6.10-3 ii tilix-common 1.9.3-4 -- Jakub Wilk