GNOME Bugzilla – Bug 773131
playbin3: Fix deadlock when adding multiple parsebin
Last modified: 2016-11-15 10:08:01 UTC
It can be rarely reproduced with validate.dash.playback.change_state_intensive.dash_exMPD_BIP_TC1 validate case. It happens when decodebin consist more than two parsebin in the pipeline such as the dash case and intensive playback. One holds SourceGroup lock in urisrc_pad_added() and try to acquire shutdown lock in pad_added_cb(). The other hold shutdown lock in no_more_pads_cb() and try to get SourceGroup lock. So I try to release SourceGroup lock before request a pad what will trigger pad_added_cb() in urisrc_pad_added(). In addition, I saw another type of deadlock with this validate test case which occurs regardless of this case. (not yet investigated deeply) * Attached related stack trace
+ Trace 236747
Thread 6 (Thread 0x7fffd758b700 (LWP 1032))
Thread 7 (Thread 0x7fffd6d8a700 (LWP 2103))
Created attachment 337915 [details] [review] playbin3: Fix deadlock when adding multiple parsebin
Thanks, pushed to master and 1.10: commit 8b95d17f75f2959175c387307be7449d752bef09 Author: Wonchul Lee <wonchul.lee@collabora.com> Date: Mon Oct 17 15:38:37 2016 +0900 playbin3: Fix deadlock when adding multiple parsebin https://bugzilla.gnome.org/show_bug.cgi?id=773131