Maato / volumeicon

Volume Icon aims to be a lightweight volume control that sits in your systray.
http://nullwise.com/volumeicon.html
GNU General Public License v3.0
183 stars 45 forks source link

volumeicon 0.5.1 segfaults #52

Closed zetok closed 7 years ago

zetok commented 8 years ago

No idea why, happens from time to time. I.e. over period of ~20 days, it segfaulted 16 times.

Using on Hardened Gentoo x86_64, under i3wm.

Built without support for notifications.

backtrace ↓, with -O2. I've recompiled volumeicon with -O0, and when crash will happen again, I'll post better bt. If you need more info/other stuff to be compiled with -O0, please say so.

Core was generated by `volumeicon'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f0ee0453ec6 in XkbGetUpdatedMap (dpy=0x5651810088b0, which=7, xkb=0x5651810ddac0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
580 /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c: No such file or directory.
[Current thread is 1 (Thread 0x7f0ee227d8c0 (LWP 7186))]
(gdb) bt
#0  0x00007f0ee0453ec6 in XkbGetUpdatedMap (dpy=0x5651810088b0, which=7, xkb=0x5651810ddac0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
#1  0x00007f0ee0453fce in XkbGetMap (dpy=0x5651810088b0, which=which@entry=7, deviceSpec=deviceSpec@entry=256) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:603
#2  0x000056518098c63a in grab_ungrab (rootwin=rootwin@entry=0x565181031150, keyval=269025043, modifiers=0, grab=grab@entry=1) at bind.c:198
#3  0x000056518098c893 in do_grab_key (binding=binding@entry=0x5651811205f0) at bind.c:309
#4  0x000056518098cc5e in keybinder_bind (keystring=0x5651810f1190 "XF86AudioRaiseVolume", handler=0x565180988dc0 <hotkey_handle>, user_data=0x0) at bind.c:465
#5  0x0000565180987755 in main (argc=1, argv=0x7ffe0b32c6e8) at volumeicon.c:1325
(gdb) t a a bt

Thread 4 (Thread 0x7f0ed624a700 (LWP 7208)):
#0  0x00007f0edfbdc7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f0ee0a339e5 in g_main_context_poll (priority=2147483647, n_fds=2, fds=0x7f0ec80010c0, timeout=-1, context=0x7f0ed000d670) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4103
#2  g_main_context_iterate (context=0x7f0ed000d670, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3803
#3  0x00007f0ee0a33e3a in g_main_loop_run (loop=0x7f0ed000d600) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4002
#4  0x00007f0ede0061cd in gdbus_shared_thread_func (user_data=0x7f0ed000d640) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/gio/gdbusprivate.c:274
#5  0x00007f0ee0a5ea4c in g_thread_proxy (data=0x5651810122d0) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gthread.c:764
#6  0x00007f0edfea34bc in start_thread (arg=0x7f0ed624a700) at pthread_create.c:333
#7  0x00007f0edfbe620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f0ed6a4b700 (LWP 7206)):
#0  0x00007f0edfbdc7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f0ee0a339e5 in g_main_context_poll (priority=2147483647, n_fds=1, fds=0x7f0ed00010e0, timeout=-1, context=0x565181058ee0) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4103
#2  g_main_context_iterate (context=context@entry=0x565181058ee0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3803
#3  0x00007f0ee0a33b22 in g_main_context_iteration (context=context@entry=0x565181058ee0, may_block=may_block@entry=1) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3869
#4  0x00007f0ed7823c0d in dconf_gdbus_worker_thread (user_data=0x565181058ee0) at dconf-gdbus-thread.c:82
#5  0x00007f0ee0a5ea4c in g_thread_proxy (data=0x565181012230) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gthread.c:764
#6  0x00007f0edfea34bc in start_thread (arg=0x7f0ed6a4b700) at pthread_create.c:333
#7  0x00007f0edfbe620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f0eceeab700 (LWP 7213)):
#0  0x00007f0edfbdc7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f0ed5628b7d in poll (__timeout=-1, __nfds=2, __fds=0x7f0ebc001710) at /usr/include/bits/poll2.h:46
#2  poll_func (ufds=0x7f0ebc001710, nfds=2, timeout=-1, userdata=0x56518111fd30) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/thread-mainloop.c:69
#3  0x00007f0ed5619693 in pa_mainloop_poll (m=m@entry=0x5651810e2910) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:844
#4  0x00007f0ed5619d56 in pa_mainloop_iterate (m=0x5651810e2910, block=<optimized out>, retval=0x0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:926
#5  0x00007f0ed5619e20 in pa_mainloop_run (m=0x5651810e2910, retval=retval@entry=0x0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:944
#6  0x00007f0ed5628b0a in thread (userdata=0x565181086e50) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/thread-mainloop.c:88
#7  0x00007f0ed53d202c in internal_thread_func (userdata=0x5651810c9f80) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulsecore/thread-posix.c:81
#8  0x00007f0edfea34bc in start_thread (arg=0x7f0eceeab700) at pthread_create.c:333
#9  0x00007f0edfbe620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f0ee227d8c0 (LWP 7186)):
#0  0x00007f0ee0453ec6 in XkbGetUpdatedMap (dpy=0x5651810088b0, which=7, xkb=0x5651810ddac0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
#1  0x00007f0ee0453fce in XkbGetMap (dpy=0x5651810088b0, which=which@entry=7, deviceSpec=deviceSpec@entry=256) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:603
#2  0x000056518098c63a in grab_ungrab (rootwin=rootwin@entry=0x565181031150, keyval=269025043, modifiers=0, grab=grab@entry=1) at bind.c:198
#3  0x000056518098c893 in do_grab_key (binding=binding@entry=0x5651811205f0) at bind.c:309
#4  0x000056518098cc5e in keybinder_bind (keystring=0x5651810f1190 "XF86AudioRaiseVolume", handler=0x565180988dc0 <hotkey_handle>, user_data=0x0) at bind.c:465
#5  0x0000565180987755 in main (argc=1, argv=0x7ffe0b32c6e8) at volumeicon.c:1325
zetok commented 8 years ago

And backtrace wtih -O0:

Core was generated by `volumeicon'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007ff29a4e3ec6 in XkbGetUpdatedMap (dpy=0x564cc8aa50b0, which=7, xkb=0x564cc8bdf5b0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
580 /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c: No such file or directory.
[Current thread is 1 (Thread 0x7ff29c3108c0 (LWP 4991))]
(gdb) bt
#0  0x00007ff29a4e3ec6 in XkbGetUpdatedMap (dpy=0x564cc8aa50b0, which=7, xkb=0x564cc8bdf5b0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
#1  0x00007ff29a4e3fce in XkbGetMap (dpy=0x564cc8aa50b0, which=7, deviceSpec=256) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:603
#2  0x0000564cc6ca5294 in grab_ungrab (rootwin=0x564cc8acd150, keyval=269025043, modifiers=0, grab=1) at bind.c:198
#3  0x0000564cc6ca5581 in do_grab_key (binding=0x564cc8d2b030) at bind.c:309
#4  0x0000564cc6ca5968 in keybinder_bind (keystring=0x564cc8b95250 "XF86AudioRaiseVolume", handler=0x564cc6ca3af8 <hotkey_handle>, user_data=0x0) at bind.c:465
#5  0x0000564cc6ca4158 in main (argc=1, argv=0x7ffc7fe263d8) at volumeicon.c:1325
(gdb) t a a bt

Thread 4 (Thread 0x7ff287fff700 (LWP 5016)):
#0  0x00007ff299c6c7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ff28dfe8b7d in poll (__timeout=-1, __nfds=3, __fds=0x7ff274001710) at /usr/include/bits/poll2.h:46
#2  poll_func (ufds=0x7ff274001710, nfds=3, timeout=-1, userdata=0x564cc8c0d9a0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/thread-mainloop.c:69
#3  0x00007ff28dfd9693 in pa_mainloop_poll (m=m@entry=0x564cc8bc25f0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:844
#4  0x00007ff28dfd9d56 in pa_mainloop_iterate (m=0x564cc8bc25f0, block=<optimized out>, retval=0x0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:926
#5  0x00007ff28dfd9e20 in pa_mainloop_run (m=0x564cc8bc25f0, retval=retval@entry=0x0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/mainloop.c:944
#6  0x00007ff28dfe8b0a in thread (userdata=0x564cc8c27dc0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulse/thread-mainloop.c:88
#7  0x00007ff28dd9202c in internal_thread_func (userdata=0x564cc8bc7da0) at /var/tmp/portage/media-sound/pulseaudio-7.1/work/pulseaudio-7.1/src/pulsecore/thread-posix.c:81
#8  0x00007ff299f334bc in start_thread (arg=0x7ff287fff700) at pthread_create.c:333
#9  0x00007ff299c7620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7ff28ec0a700 (LWP 5014)):
#0  0x00007ff299c6c7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ff29aac39e5 in g_main_context_poll (priority=2147483647, n_fds=1, fds=0x7ff2800010c0, timeout=-1, context=0x564cc8af21b0) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4103
#2  g_main_context_iterate (context=context@entry=0x564cc8af21b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3803
#3  0x00007ff29aac3b22 in g_main_context_iteration (context=context@entry=0x564cc8af21b0, may_block=may_block@entry=1) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3869
#4  0x00007ff29082bc0d in dconf_gdbus_worker_thread (user_data=0x564cc8af21b0) at dconf-gdbus-thread.c:82
#5  0x00007ff29aaeea4c in g_thread_proxy (data=0x564cc8aae370) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gthread.c:764
#6  0x00007ff299f334bc in start_thread (arg=0x7ff28ec0a700) at pthread_create.c:333
#7  0x00007ff299c7620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7ff28f40b700 (LWP 5013)):
#0  0x00007ff299c6c7bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ff29aac39e5 in g_main_context_poll (priority=2147483647, n_fds=2, fds=0x7ff2880010e0, timeout=-1, context=0x564cc8ae9e60) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4103
#2  g_main_context_iterate (context=0x564cc8ae9e60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:3803
#3  0x00007ff29aac3e3a in g_main_loop_run (loop=0x564cc8aeafa0) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gmain.c:4002
#4  0x00007ff2980961cd in gdbus_shared_thread_func (user_data=0x564cc8ae9e30) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/gio/gdbusprivate.c:274
#5  0x00007ff29aaeea4c in g_thread_proxy (data=0x564cc8aae400) at /var/tmp/portage/dev-libs/glib-2.44.1-r1/work/glib-2.44.1/glib/gthread.c:764
#6  0x00007ff299f334bc in start_thread (arg=0x7ff28f40b700) at pthread_create.c:333
#7  0x00007ff299c7620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7ff29c3108c0 (LWP 4991)):
#0  0x00007ff29a4e3ec6 in XkbGetUpdatedMap (dpy=0x564cc8aa50b0, which=7, xkb=0x564cc8bdf5b0) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:580
#1  0x00007ff29a4e3fce in XkbGetMap (dpy=0x564cc8aa50b0, which=7, deviceSpec=256) at /var/tmp/portage/x11-libs/libX11-1.6.3/work/libX11-1.6.3/src/xkb/XKBGetMap.c:603
#2  0x0000564cc6ca5294 in grab_ungrab (rootwin=0x564cc8acd150, keyval=269025043, modifiers=0, grab=1) at bind.c:198
#3  0x0000564cc6ca5581 in do_grab_key (binding=0x564cc8d2b030) at bind.c:309
#4  0x0000564cc6ca5968 in keybinder_bind (keystring=0x564cc8b95250 "XF86AudioRaiseVolume", handler=0x564cc6ca3af8 <hotkey_handle>, user_data=0x0) at bind.c:465
#5  0x0000564cc6ca4158 in main (argc=1, argv=0x7ffc7fe263d8) at volumeicon.c:1325
Maato commented 8 years ago

I could not pin down the exact cause of this bug. The segfault appears to happen when some internal pointer of the Display structure gets dereferenced, however from looking at the X11 code I could not see an obvious way it could become corrupted. I have updated to the latest bind.c file from libkeybinder which may or may not contain a fix. I'm not sure as I was not able to reproduce the issue.

nkoep commented 7 years ago

Has this issue re-surfaced in the meantime, @zetok?