GNOME Bugzilla – Bug 746480
playbin: deadlock on PMT change in mpeg TS stream
Last modified: 2015-12-16 16:11:10 UTC
I have a TS sample that has a change in PMT, this causes playbin to deadlock. http://people.collabora.com/~tester/pmt-change-2.ts It seems to also be broken on 1.4, so it's not a regression per se. tack trace of the relevant threads from gst-play-1.0 with git master as of March 19, 2015 (today):
+ Trace 234874
Thread 4 (Thread 0x7fffe7fff700 (LWP 29350))
Created attachment 300291 [details] [review] fix deadlock on chain shutown
commit 77dc09c3a9a5e5e371e189f39b5557db440a8dc9 Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> Date: Wed Mar 25 15:36:38 2015 +0000 decodebin2: fix deadlock on chain shutdown When shutting down the chain, we can get a deadlock when removing a pad, if that chain was being busy streaming but blocked (eg, while waiting for a queue to have free space). https://bugzilla.gnome.org/show_bug.cgi?id=746480
I finally got a decent repro: 1. Used the following branches from mtl.collabora.ca: - mmfd: gdp - gst-p-bad: vecima - gst-p-vaapi: wayland And the following files - the config file at jalfrezi.collabora.co.uk:~tester/pmt-change-bug/mmfd.cfg - and the dump jalfrezi.collabora.co.uk:~tester/pmt-change-bug/myd_0.1428767699975019.gdp Then I run it as: ./mmfd 0 Then at the end of the trailer, after it switches to the next clip, the sound goes away sometimes... Or the pipeline freezes and causes the restart mechanism to be triggered, which it shouldn't be.
arg.. wrong bug
This commit is not a good idea. I have a case here where the flush events go to the sinks! Also the commit is not even required anymore with latest GIT master for whatever reason. Let's just revert it for now... commit 60bad4815db966a8e4f69e333203a995e38e0159 Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Dec 16 17:07:54 2015 +0100 Revert "decodebin2: fix deadlock on chain shutdown" This reverts commit 77dc09c3a9a5e5e371e189f39b5557db440a8dc9. It can cause the FLUSH_START/STOP events to go to the sink elements, which then causes state changes and various other problems. We shouldn't really flush downstream here, the idea is to do *draining*. Apart from that the testcase for the original bug here works without this commit now.