GNOME Bugzilla – Bug 777449
parse: Deadlock when trying to link an element that takes its object lock while querying caps
Last modified: 2017-01-18 13:44:52 UTC
Created a "freezer" element (code is trivial, but still attached) that is basically an empty GstBaseTransform, except it posts a GST_ELEMENT_ERROR in transform_caps and returns empty caps. The following line freezes the pipeline: gst-launch-1.0 audiotestsrc ! "audio/x-raw" ! freezer ! fakesink gdb backtrace:
+ Trace 237068
Thread 1 (Thread 0x7ffff7fb3700 (LWP 26359))
Log file: https;//ahiru.eu/~vivia/freezer-log.xz
Created attachment 343720 [details] [review] 0001-freezer-New-element-to-test-a-pipeline-freeze.patch
commit 80c5fd50dbb72a9cf3584ba0c2d9cd70a7cc90b2 Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Jan 18 15:07:58 2017 +0200 parse: Don't hold element's object lock while querying element pads' caps This can easily deadlock if the element uses the object lock for something internally, like posting an error message. Use an GstIterator for iterating over the pads instead. https://bugzilla.gnome.org/show_bug.cgi?id=777449