GNOME Bugzilla – Bug 781320
adaptivedemux: Don't hold locks when pushing FLUSH_START
Last modified: 2017-04-15 06:19:25 UTC
See commit
Created attachment 349871 [details] [review] adaptivedemux: Don't hold locks when pushing FLUSH_START Some actions (Qos, reconfigure, ...) might take place before we finish pushing out flush_start.
The problem is that: 1) The QOS handling in adaptivedemux takes the MANIFEST LOCK That QOS event comes from basesink with its PREROLL_LOCK taken 2) FLUSH_START is sent from adaptivedemux with the MANIFEST_LOCK taken and the basesink flushing handler needs to take the PREROLL_LOCK => deadlock
Created attachment 349873 [details] [review] adaptivedemux: Don't hold locks when pushing FLUSH_START Some actions (Qos, reconfigure, ...) might take place before we finish pushing out flush_start. One problem would be that: 1) The QOS handling in adaptivedemux takes the MANIFEST LOCK That QOS event comes from basesink with its PREROLL_LOCK taken 2) FLUSH_START is sent from adaptivedemux with the MANIFEST_LOCK taken and the basesink flushing handler needs to take the PREROLL_LOCK => deadlock
commit e00be2758528eb4ddb326efe4c261ce3b776a6e5 Author: Edward Hervey <edward@centricular.com> Date: Fri Apr 14 18:16:28 2017 +0200 adaptivedemux: Don't hold locks when pushing FLUSH_START Some actions (Qos, reconfigure, ...) might take place before we finish pushing out flush_start. One problem would be that: 1) The QOS handling in adaptivedemux takes the MANIFEST LOCK That QOS event comes from basesink with its PREROLL_LOCK taken 2) FLUSH_START is sent from adaptivedemux with the MANIFEST_LOCK taken and the basesink flushing handler needs to take the PREROLL_LOCK => deadlock https://bugzilla.gnome.org/show_bug.cgi?id=781320