[Bug 643087] pulsesink: deadlock in gst_pulseringbuffer_open_device

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Feb 24 02:31:14 PST 2011


https://bugzilla.gnome.org/show_bug.cgi?id=643087
  GStreamer | gst-plugins-good | git

--- Comment #9 from Philip Jägenstedt <philipj at opera.com> 2011-02-24 10:31:08 UTC ---
Now, thread 6 and 8 are still the interesting ones.

Thread 6 is waiting in pa_threaded_mainloop_wait (m=0x7fffe81a6aa0) at
pulse/thread-mainloop.c:212, that is pa_cond_wait(m->cond, m->mutex);

That m->mutex is being held by thread 8, how did that happen? It turns out it's
not that mysterious, pa_threaded_mainloop_wait is waiting for a condition,
which of course releases the lock! The documentation says so quite clearly:
"While waiting the lock will be released, immediately before returning it will
be acquired again."

So, this is a pretty basic deadlock, albeit a bit racy. The fix here must be to
untangle the use of pa_shared_resource_mutex and
pa_threaded_mainloop_lock/unlock.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list