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);
I'm trying to trace down a crash:
https:/ /bugs.launchpad .net/ubuntu/ +source/ pulseaudio/ +bug/853560 /launchpadlibra rian.net/ 80418699/ ThreadStacktrac e.txt
https:/
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 /thread- mq.c /thread- mq.c read_cb( pa_mainloop_ api*api, assert( events == PA_IO_EVENT_INPUT);
index 51fb765..b492793 100644
--- a/src/pulsecore
+++ b/src/pulsecore
@@ -42,7 +42,7 @@ static void asyncmsgq_
pa_io_event* e, int fd, pa_io
pa_
pa_ asyncmsgq_ ref(aq = q->outq); write_after_ poll(aq) ; read_after_ poll(aq) ;
- pa_asyncmsgq_
+ pa_asyncmsgq_
for (;;) {
pa_msgobject *object;
-- launchpad. net/~diwic
David Henningsson, Canonical Ltd.
http://