[Bug 767879] New: Deadlock in WebKit when deleting the media player while HLS media was loaded

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Jun 20 16:43:26 UTC 2016


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

            Bug ID: 767879
           Summary: Deadlock in WebKit when deleting the media player
                    while HLS media was loaded
    Classification: Platform
           Product: GStreamer
           Version: 1.8.2
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: carlosgc at gnome.org
        QA Contact: gstreamer-bugs at lists.freedesktop.org
                CC: mcatanzaro at gnome.org, phil at base-art.net,
                    vjaquez at igalia.com
     GNOME version: ---

It happens when the media player is destroyed by the garbacge collector and
pipeline is set to NULL state. This always happens in the main thread, since
the garbage colector frees the objects in the main thread. The situation is the
following one:

Main Thread:
  - blocked on GST_PAD_STREAM_LOCK (post_activate() gstpad.c)

Secondary Thread:
  - blocked on GST_MANIFEST_LOCK (gst_adaptive_demux_src_event() reconfigure
gstadaptivedemux.c)
  - has EXPOSE_LOCK of gstdecodebin2 taken from source_pad_blocked_cb()

Secondary Thread:
  - blocked on EXPOSE_LOCK (no_more_pads_cb() gstdecodebin2.c)
  - it seems to have GST_PAD_STREAM_LOCK of gstpad taken from
gst_pad_send_event_unchecked()
  - has GST_MANIFEST_LOCK of gstadaptivedemux taken from _src_event, got
fragment EOS

Secondary Thread:
  - infinite loop waiting for fragment download to finish
(gst_adaptive_demux_stream_download_uri()

I haven't been able to fix or workaround this from WebKit code, the only change
the seemed to work was releasing the manifest lock in
gst_adaptive_demux_expose_streams before calling gst_element_no_more_pads() and
taking it again. But I have no idea if the change is correct or just a
workaround, the gst code is full of locks and conditions that is very difficult
to follow.

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