GNOME Bugzilla – Bug 767169
adaptivedemux: avoid possible deadlock while destroying old sources
Last modified: 2016-07-17 18:42:47 UTC
Created attachment 328977 [details] [review] patch gst_element_set_state() will lock the stream lock for the source pad of the element. If the element pushes data at the same time, it may wait for the manifest lock while holding the stream lock. So calling gst_element_set_state() while the manifest lock is locked can cause deadlocks.
Thanks for the patch. I believe this was also fixed as part of: commit 62ca319927c15c984fb587e357cfbbf994eca717 Author: Jan Schmidt <jan@centricular.com> Date: Wed Jul 13 23:02:10 2016 +1000 adaptivedemux: Drop the manifest lock during outbound actions Drop the manifest lock when performing actions that might call back into adaptivedemux and trigger deadlocks, such as adding/removing pads or sending in-band events (EOS). Unlock the manifest lock when changing the child bin state to NULL, as it might call back to acquire the manifest lock when shutting down pads. Drop the manifest lock while pushing events.