Hi, A follow-up. I found this block in src/pulse/thread-mainloop.c: /* Make sure that signals are delivered to the main thread */ sigfillset(&mask); pthread_sigmask(SIG_BLOCK, &mask, NULL) Sure enough, temporarily commenting this out fixes my problem. I understand the reason for this code to exist, but it's unfortunate that the PulseAudio client library forces such a PulseAudio-centric design in order to interact with it when the majority of applications will have no need for this. Would it perhaps be possible to make signal capturing conditional on pa_signal_init() being called? Obviously the code cannot simply be moved into there, as it would run in the wrong thread, but something along these lines? -- Jay L. T. Cornwall http://www.jcornwall.me.uk/