I am seeing 3 threads for the xfce4-volumed process, 2 of the threads appear to be related to gstreamer (maybe one for each sound device/mixer) and one of these threads is spinning when I unplug my USB headset, stacktrace for that thread is:
#0 0x00007ffff35063c3 in poll () from /lib/libc.so.6
#1 0x00007fffef086e9b in ?? () from /usr/lib/gstreamer-0.10/libgstalsa.so
#2 0x00007ffff6be5417 in ?? () from /usr/lib/libgstreamer-0.10.so.0
#3 0x00007ffff7b7e142 in ?? () from /lib/libglib-2.0.so.0
#4 0x00007ffff7b7cb44 in ?? () from /lib/libglib-2.0.so.0
#5 0x00007ffff7292a04 in start_thread () from /lib/libpthread.so.0
#6 0x00007ffff351280d in clone () from /lib/libc.so.6
#7 0x0000000000000000 in ?? ()
So looks like I need to have a closer look at gstreamer then...
I am seeing 3 threads for the xfce4-volumed process, 2 of the threads appear to be related to gstreamer (maybe one for each sound device/mixer) and one of these threads is spinning when I unplug my USB headset, stacktrace for that thread is:
#0 0x00007ffff35063c3 in poll () from /lib/libc.so.6 gstreamer- 0.10/libgstalsa .so libgstreamer- 0.10.so. 0 2.0.so. 0 2.0.so. 0 .so.0
#1 0x00007fffef086e9b in ?? () from /usr/lib/
#2 0x00007ffff6be5417 in ?? () from /usr/lib/
#3 0x00007ffff7b7e142 in ?? () from /lib/libglib-
#4 0x00007ffff7b7cb44 in ?? () from /lib/libglib-
#5 0x00007ffff7292a04 in start_thread () from /lib/libpthread
#6 0x00007ffff351280d in clone () from /lib/libc.so.6
#7 0x0000000000000000 in ?? ()
So looks like I need to have a closer look at gstreamer then...
BTW, strace for the spinning thread shows
poll([{fd=12, events= POLLIN| POLLERR| POLLNVAL} , {fd=10, events= POLLIN| POLLPRI| POLLERR| POLLHUP} ], 2, -1) = 1 ([{fd=12, revents= POLLERR| POLLNVAL} ])
So my guess would be that gstreamer doesn't handle the POLLERR|POLLNVAL result properly.