GNOME Bugzilla – Bug 465015
[playbin] Not removed probes causes deadlocks in streaming mode
Last modified: 2007-11-02 12:29:32 UTC
When playbin is in streaming mode a probe is installed in one of the queues to track buffering. This probe is removed when the overrun signal is fired and queue_threshold_reached is call. If queue without the probe triggers for queue_threshold_reached, the probe is not removed. If group is commited and overrun signal is removed the probe is not removed. That causes deadlocks with decodebin1 and decodebin2, more often with decodebin2 because the group commit case.
Created attachment 93353 [details] [review] Patch to fix the bug
Looks good to me. Committed: * gst/playback/gstplaybasebin.c: (group_commit), (queue_remove_probe), (queue_threshold_reached): Patch by: Josep Torra Valles <josep@fluendo.com> Fixes: #465015 Make sure we remove the check_queues buffer probe from the correct queue to avoid racily going back to "buffering 99%" when buffering is actually complete.
This seems to have caused a crasher regression with external subtitles, see bug #491722. Also, I think the group lock needs to be taken before calling get_active_group().