gstreamer/gst
Vincent Penquerc'h 9036dc8594 decodebin: possible fix for deadlock when spamming "next song"
There was a deadlock between a thread changing decodebin/demuxer
state from PAUSED to READY, and another thread pushing data
when starting.

From the stack trace at
https://bug741355.bugzilla-attachments.gnome.org/attachment.cgi?id=292471,
I deduce the following is happening, though I did not reproduce the
problem so I'm not sure this patch fixes it.

The streaming thread (thread 2 in that stack trace) takes the demuxer's
sink pad's stream lock in gst_ogg_demux_perform_seek_pull and will
activate a new chain. This ends up causing the expose lock being taken
in _pad_added_cb in decodebin.

Meanwhile, a state changed is triggered on thread 1, which takes the
expose lock in decodebin in gst_decode_bin_change_state, then frees
the previous chain, which ends up calling gst_pad_stop_task on the
demuxer's task, which in turn takes the demuxer's sink pad's stream
lock, deadlocking as both threads are now waiting for each other.

https://bugzilla.gnome.org/show_bug.cgi?id=741355
2015-02-19 13:38:29 +00:00
..
adder Improve and fix LATENCY query handling 2015-02-11 17:53:49 +02:00
app docs: remove old 0.10 Since markers 2013-11-16 16:10:07 +00:00
audioconvert orc: update orc files 2015-01-27 13:39:14 +00:00
audiorate audiorate: Fill gap events 2014-12-14 12:09:12 +01:00
audioresample Constify some static arrays everywhere 2015-01-21 09:49:47 +01:00
audiotestsrc audiotestsrc: Report our latency properly in live mode 2014-12-24 12:59:37 +01:00
encoding Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
gio docs: fix some gtk-doc warnings 2014-11-15 23:13:42 +00:00
playback decodebin: possible fix for deadlock when spamming "next song" 2015-02-19 13:38:29 +00:00
subparse Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
tcp Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
typefind typefindfunctions: detect mp4 common file format variant 2014-11-26 16:54:39 +00:00
videoconvert videoconvert: add dither-bits option 2014-12-02 15:23:00 +01:00
videorate videorate: Add $(GST_PLUGINS_BASE_CFLAGS) to be able to find gst/video/video.h 2015-01-19 11:17:18 +01:00
videoscale videoscale: fix memory leak 2015-02-04 12:09:45 +00:00
videotestsrc orc: update orc files 2015-01-27 13:39:14 +00:00
volume orc: update orc files 2015-01-27 13:39:14 +00:00
Makefile.am build: build plugin and example directories in parallel if make -jN is used 2010-03-29 00:26:59 +01:00