[Bug 764939] New: gstbasesink: deadlock caused by klass->wait_event() which leaves preroll mutex locked

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 12 10:35:10 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=764939

            Bug ID: 764939
           Summary: gstbasesink: deadlock caused by klass->wait_event()
                    which leaves preroll mutex locked
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: mariusz.buras at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

I'm seeing a deadlock in certain cases when after calling klass->wait_event()
preroll mutex remains locked. This is happening because
gst_base_sink_default_wait_event() calls to gst_base_sink_do_sync() which
requires preroll lock to be taken before. Sadly
gst_base_sink_default_wait_event() doesn't do that and eventually
GST_BASE_SINK_PREROLL_WAIT() is called without preroll mutex being taken. After
the wait finishes corresponding preroll mutex remains locked causing a deadlock
later in the execution (state change in my case). 

A fix for that doesn't seem to be so obvious as there are other functions (like
gst_base_sink_event()) which end up calling gst_base_sink_do_sync() with
preroll lock taken.

Is this a genuine issue or gstbasesink usage error on my part?

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