[Bug 737794] multiqueue: deadlock if queue overruns with serialized events

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Oct 6 00:00:49 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=737794
  GStreamer | gstreamer (core) | git

Sebastian Dröge (slomo) <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #287613|none                        |needs-work
             status|                            |

--- Comment #3 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2014-10-06 07:00:43 UTC ---
Review of attachment 287613:
 --> (https://bugzilla.gnome.org/review?bug=737794&attachment=287613)

::: plugins/elements/gstmultiqueue.c
@@ +1867,1 @@
           g_cond_wait (&sq->query_handled, &mq->qlock);

This causes a race condition. The query (not event!) can already be taken out
of the queue again before you lock again and wait for the condition variable,
leading to another deadlock caused by waiting forever for the condition
variable to be signalled.

Why does the dataqueue block in your case? There's a check above that will only
consider putting it in the dataqueue in certain conditions. Which is true in
your case? !use_buffering? Why is the queue never emptying in your case, which
would lead to the deadlock solving itself?

-- 
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