After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 783255 - adaptivedemux: release the manifest lock ...
adaptivedemux: release the manifest lock ...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
unspecified
Other All
: Normal normal
: 1.12.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-05-31 01:11 UTC by Mathieu Duponchelle
Modified: 2017-06-12 14:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
adaptivedemux: release the manifest lock ... (1.44 KB, patch)
2017-05-31 01:11 UTC, Mathieu Duponchelle
committed Details | Review
Stacktrace for the described deadlock (19.82 KB, text/plain)
2017-05-31 01:13 UTC, Mathieu Duponchelle
  Details

Description Mathieu Duponchelle 2017-05-31 01:11:48 UTC
before broadcasting preroll.

The deadlock was as follows:

-> The subclass pushes a buffer on a newly-created stream in T1
-> We take the preroll lock in T1, to handle_preroll
-> The demuxer is stopped in T2, we take the MANIFEST_LOCK
-> T1 starts blocking because it received a reconfigure event
   and needs to take the MANIFEST_LOCK
-> T2 deadlocks because it now wants the preroll_lock.
Comment 1 Mathieu Duponchelle 2017-05-31 01:11:53 UTC
Created attachment 352910 [details] [review]
adaptivedemux: release the manifest lock ...
Comment 2 Mathieu Duponchelle 2017-05-31 01:13:29 UTC
Created attachment 352911 [details]
Stacktrace for the described deadlock
Comment 3 Mathieu Duponchelle 2017-05-31 01:16:51 UTC
To reproduce this error, simply run:

gst-validate-launcher --mute -t 'validate.hls.media_check.bipbopall_m3u8' --forever
Comment 4 Jan Schmidt 2017-06-01 10:50:28 UTC
Comment on attachment 352910 [details] [review]
adaptivedemux: release the manifest lock ...

Looks good. Should get backported.
Comment 5 Edward Hervey 2017-06-01 13:35:02 UTC
commit 694da006e041cfd3fa1247525f21fdaedebac446
Author: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
Date:   Wed May 31 02:46:01 2017 +0200

    adaptivedemux: release the manifest lock ...
    
    before broadcasting preroll.
    
    The deadlock was as follows:
    
    -> The subclass pushes a buffer on a newly-created stream in T1
    -> We take the preroll lock in T1, to handle_preroll
    -> The demuxer is stopped in T2, we take the MANIFEST_LOCK
    -> T1 starts blocking because it received a reconfigure event
       and needs to take the MANIFEST_LOCK
    -> T2 deadlocks because it now wants the preroll_lock.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=783255