overlaycomposition: occasional deadlock on windows when setting state to GST_STATE_NULL
My application runs multiple concurrent (16 or more) playbin3
pipelines, each containing an overlaycomposition
.
The pipelines can be stopped and started concurrently. I am using the latest gst-build
built with MSVC.
After capturing a memory dump and opening in visual studio - here is the stack trace of the deadlock. And I don't see any other threads holding this lock.
glib-2.0-0.dll!g_rec_mutex_lock(_GRecMutex * mutex) Line 160
at c:\users\aaron\src\gst-build-x86\subprojects\glib\glib\gthread-win32.c(160)
gstreamer-1.0-0.dll!post_activate(_GstPad * pad, GstPadMode new_mode) Line 1046
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstpad.c(1046)
gstreamer-1.0-0.dll!activate_mode_internal(_GstPad * pad, _GstObject * parent, GstPadMode mode, int active) Line 1224
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstpad.c(1224)
gstreamer-1.0-0.dll!gst_pad_set_active(_GstPad * pad, int active) Line 1115
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstpad.c(1115)
gstreamer-1.0-0.dll!activate_pads(const _GValue * vpad, _GValue * ret, int * active) Line 3121
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(3121)
gstreamer-1.0-0.dll!gst_iterator_fold(_GstIterator * it, int(*)(const _GValue *, _GValue *, void *) func, _GValue * ret, void * user_data) Line 617
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstiterator.c(617)
gstreamer-1.0-0.dll!iterator_activate_fold_with_resync(_GstIterator * iter, int(*)(const _GValue *, _GValue *, void *) func, void * user_data) Line 3145
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(3145)
gstreamer-1.0-0.dll!gst_element_pads_activate(_GstElement * element, int active) Line 3192
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(3192)
gstreamer-1.0-0.dll!gst_element_change_state_func(_GstElement * element, GstStateChange transition) Line 3255
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(3255)
gstoverlaycomposition.dll!gst_overlay_composition_change_state(_GstElement * element, GstStateChange transition) Line 183
at c:\users\aaron\src\gst-build-x86\subprojects\gst-plugins-base\gst\overlaycomposition\gstoverlaycomposition.c(183)
gstreamer-1.0-0.dll!gst_element_change_state(_GstElement * element, GstStateChange transition) Line 3033
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(3033)
gstreamer-1.0-0.dll!gst_element_set_state_func(_GstElement * element, GstState state) Line 2987
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(2987)
gstreamer-1.0-0.dll!gst_element_set_state(_GstElement * element, GstState state) Line 2888
at c:\users\aaron\src\gst-build-x86\subprojects\gstreamer\gst\gstelement.c(2888)
``