gstreamer/gst
Vincent Penquerc'h a2ee84fa80 decodebin: fix deadlock between downward state change and pad addition
If caps on a newly added pad are NULL, analyze_new_pad will try to
acquire the chain lock to add a probe to the pad so the chain can
be built later. This comes from the streaming thread, in response
to headers or other buffers causing this pad to be added, so the
stream lock is taken.

Meanwhile, another thread might be destroying the chain from a
downward state change. This will cause the chain to be freed with
the chain lock taken, and some elements are set to NULL here, which
can include the parser. This causes pad deactivation, which tries
to take the element's pad's stream lock, deadlocking.

Fix this by keeping track of which elements need setting to NULL,
and only do this after the chain lock is released. Only the chain
manipulation needs to be locked, not the elements' state changes.

https://bugzilla.gnome.org/show_bug.cgi?id=741355
2015-02-19 13:38:35 +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: fix deadlock between downward state change and pad addition 2015-02-19 13:38:35 +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