#430: Threaded mainloop API steals signals unnecessarily ------------------------+--------------------------------------------------- Reporter: jcornwall | Owner: lennart Type: defect | Status: closed Priority: normal | Milestone: Component: libpulse | Severity: normal Resolution: invalid | Keywords: ------------------------+--------------------------------------------------- Comment (by jcornwall):
Thanks for the explanation. My assumption of pthread_sigmask was upside down; I had thought that SIG_BLOCK diverted signals to, rather than away from, that thread. I had already tried intercepting callbacks to restore signals prior to making this bug report. It should have worked but I hadn't expected PulseAudio to invoke callbacks from multiple threads (the state callback is first called from the blocked pa_context_connect call and only afterwards from the mainloop thread) and had incorrectly optimised the pthread_sigmask call to occur only once. Now I simply check if the thread has been seen before and unblock signals if it hasn't, which works fine. I will take this up with the Mono developers as it seems to be a bug to assume that any thread entering managed code receives the signals that the runtime requires. Quite what they do with those signals will be interesting to find out! -- Ticket URL: <http://pulseaudio.org/ticket/430#comment:2> PulseAudio <http://pulseaudio.org/> The PulseAudio Sound Server _______________________________________________ pulseaudio-tickets mailing list pulseaudio-tickets@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets