Dear Maintainer,
after launching `usbguard-notifier` it runs fine. When I connect a USB-C hub to machine, however,
a few notifications do appear (as expected) but `usbguard-notifier` crashes with
terminate called after throwing an instance of 'std::runtime_error'
what(): Failed to show notification
This behaviour is reproducible reliably on my KDE-based system. I tried running in GDB, following
https://wiki.debian.org/HowToGetABacktrace to get debug information. But these seem to be
missing for the relevant source file.
Excerpt from the GDB session:
terminate called after throwing an instance of 'std::runtime_error'
what(): Failed to show notification
[Thread 0x7fffeffff6c0 (LWP 3429811) exited]
Thread 5 "usbguard-notifi" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffef7fe6c0 (LWP 3429812)]
Download failed: Invalid argument. Continuing without source file ./nptl/./nptl/pthread_kill.c.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1 0x00007ffff709e9ff in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
#2 0x00007ffff7049cc2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff70324ac in __GI_abort () at ./stdlib/abort.c:73
#4 0x00007ffff72a1a3d in __gnu_cxx::__verbose_terminate_handler () at ../../../../src/libstdc++-v3/libsupc++/vterminate.cc:95
#5 0x00007ffff72b344a in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:48
#6 0x00007ffff72a15e9 in std::terminate () at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:58
#7 0x00007ffff72b36c8 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x7ffff7456eb8 <typeinfo for std::runtime_error>, dest=0x7ffff72c85e0 <std::runtime_error::~runtime_error()>)
at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:98
#8 0x00005555555588a5 in usbguardNotifier::Notifier::sendDevicePresenceNotification (this=this@entry=0x7fffffffda40, info=...) at src/Notifier.cpp:176
#9 0x000055555555aa2b in usbguardNotifier::Notifier::sendDevicePresenceCountdownCallback (this=0x7fffffffda40, id=46) at src/Notifier.cpp:140
#10 0x00007ffff72e1224 in std::execute_native_thread_routine (__p=0x7fffe8101410) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:104
#11 0x00007ffff709cb7b in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:448
#12 0x00007ffff711a7b8 in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb) up 8
Download failed: Invalid argument. Continuing without source file ./src/Notifier.cpp.
#8 0x00005555555588a5 in usbguardNotifier::Notifier::sendDevicePresenceNotification (this=this@entry=0x7fffffffda40, info=...) at src/Notifier.cpp:176
warning: 176 src/Notifier.cpp: No such file or directory
(gdb) l
171 in src/Notifier.cpp
and a disassembly of the area where the crash was triggered
(gdb) set print asm-demangle on
(gdb) disassemble /s
[...]
0x000055555555887c <-6644>: mov 0x278(%rsp),%rax
0x0000555555558884 <-6636>: sub %fs:0x28,%rax
0x000055555555888d <-6627>: jne 0x5555555588c5 <usbguardNotifier::Notifier::sendDevicePresenceNotification(usbguardNotifier::Notifier::DevicePresenceInfo&)-6571>
0x000055555555888f <-6625>: mov 0xc712(%rip),%rdx # 0x555555564fa8
0x0000555555558896 <-6618>: mov 0xc733(%rip),%rsi # 0x555555564fd0
0x000055555555889d <-6611>: mov %rbp,%rdi
0x00005555555588a0 <-6608>: call 0x555555558330 <__cxa_throw@plt>
=> 0x00005555555588a5 <-6603>: endbr64
I can provide a compressed transcript of the full GDB session if you consider that useful.
Best regards,
Jan