GNOME Bugzilla – Bug 758859
A pipeline with multiple queues "hang" (does not exit from pending state), if state is changed from playing to pause and vice versa constantly
Last modified: 2015-12-03 21:19:23 UTC
Created attachment 316540 [details] Application for a bug reproduction Please run attached test application, which creates artificial pipeline (the simplest one) "fakesrc ! tee name=t t.src_0 ! queue ! fakesink t.src_1 ! queue ! fakesink" and wait for messages "gst_element_get_state() state pending" printing constantly. For GStreamer 1.x 5 minutes of waiting is typically enough for a bug reproduction. For GStreamer 0.10 10 seconds is enough for a bug reproduction.
Created attachment 316725 [details] State of pipeline in case of deadlock (dot from Gstreamer 0.10)
After nice chat on #gstreamer with Nicolas Dufresne and Tim-Philipp Muller, I change status from bug to "not a bug", because: - main reason of unusual behavior is case when one of queues is empty, second is full and sink connected with empty queue wants to preroll (state change from playing to paused). In that case if tee wants to push buffer to full queue, it will be blocked, - all elements in pipeline behaves as expected,
I'm not absolutely certain yet that there isn't a bug here.