I'm trying to trace down a crash: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/853560 https://launchpadlibrarian.net/80418699/ThreadStacktrace.txt I'm seeing that both threads call "pa_asyncq_write_after_poll" simultaneously on the same object, which is module-null-sink's thread_mq->outq. The outq writes in the thread and reads from the main thread. Therefore it seems like the main thread should not call write_after_poll. From what I can see, there almost seems to be a typo in asyncmsgq_read_cb (see suggested patch below). But since this is deep down, has been there for three years without causing trouble in the past (for what we know), I'd like a second opinion before actually applying this patch. I've just run a a quick test here and it didn't seem to break anything. diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c index 51fb765..b492793 100644 --- a/src/pulsecore/thread-mq.c +++ b/src/pulsecore/thread-mq.c @@ -42,7 +42,7 @@ static void asyncmsgq_read_cb(pa_mainloop_api*api, pa_io_event* e, int fd, pa_io pa_assert(events == PA_IO_EVENT_INPUT); pa_asyncmsgq_ref(aq = q->outq); - pa_asyncmsgq_write_after_poll(aq); + pa_asyncmsgq_read_after_poll(aq); for (;;) { pa_msgobject *object; -- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic