[Bug 766645] matroskademux: don't hold object lock whilst pushing out headers, might lead to query deadlock
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Thu May 19 21:07:15 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=766645
Tim-Philipp Müller <t.i.m at zen.co.uk> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
Target Milestone|git master |1.8.2
Summary|matroskademux: Remove |matroskademux: don't hold
|unnecessary lock condition |object lock whilst pushing
| |out headers, might lead to
| |query deadlock
--- Comment #4 from Tim-Philipp Müller <t.i.m at zen.co.uk> ---
Thanks for the patch.
I don't see any reason why the demuxer needs to take the lock here either, the
variables should be sufficiently protected by the stream lock.
And in general, elements should never hold the OBJECT_LOCK when pushing out
buffers or events.
In addition to that, if the GST_ELEMENT_ERROR() code path was ever hit, that
would deadlock too.
commit eb09829a1c1987373ae433daca6420ea6c0fb908
Author: Seungha Yang <sh.yang at lge.com>
Date: Thu May 19 15:36:57 2016 +0900
matroskademux: don't hold object lock whilst pushing out headers
matroskademux would take the GST_OBJECT_LOCK in
- gst_matroska_demux_push_codec_data_all()
- gst_matroska_demux_query()
Some parse element such as FLAC checks upstream seekability, and
there is some use cases that matroska-demux is linked to a parse element
(e.g.,FLAC format) without intermediate elements (e.g., queue).
In this case, matroska-demux never returns from _push_codec_data_all()
because the parser can return only after it receives the response to
the upstream query, but that's not going to happen because it's
deadlocked.
Elements must not hold the object lock whilst pushing out events
or data.
https://bugzilla.gnome.org/show_bug.cgi?id=766645
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list