uridecodebin3: dead lock in gapless mode
To reproduce:
$ git clone https://gitlab.freedesktop.org/gdesmott/test-gst.git --branch uriplaylistbin-test-fail
$ cd test-gst/
$ wget https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/raw/main/utils/uriplaylistbin/tests/sample.mkv
$ cargo run -- file://$(pwd)/sample.mkv
This test app plays the same mkv
file using uridecodebin3 ! streamsynchronizer
, restarting it when about-to-finish
is emitted.
After a few iterations it's usually locked:
Thread 10 (Thread 0x7f5f42a006c0 (LWP 508390) "queue1:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f24024f98, mutex=0x7f5f24024f88) at ../glib/gthread-posix.c:1581
#2 0x00007f5f539331fb in gst_queue_loop (pad=0x7f5f1c00a600) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1572
#3 0x00007f5f54500150 in gst_task_func (task=0x7f5f040255f0) at ../subprojects/gstreamer/gst/gsttask.c:399
#4 0x00007f5f5450155b in default_func (tdata=0x7f5f1c013430, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#5 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#6 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f1c013c00) at ../glib/gthread.c:831
#7 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#8 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 9 (Thread 0x7f5f48c006c0 (LWP 508387) "queue0:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f24024398, mutex=0x7f5f24024388) at ../glib/gthread-posix.c:1581
#2 0x00007f5f539331fb in gst_queue_loop (pad=0x7f5f3c02fc80) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1572
#3 0x00007f5f54500150 in gst_task_func (task=0x7f5f1400ba70) at ../subprojects/gstreamer/gst/gsttask.c:399
#4 0x00007f5f5450155b in default_func (tdata=0x7f5f24028ff0, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#5 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#6 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f0c016e40) at ../glib/gthread.c:831
#7 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#8 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 8 (Thread 0x7f5f4b4006c0 (LWP 508383) "multiqueue0:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f3400b928, mutex=0x7f5f3400b918) at ../glib/gthread-posix.c:1581
#2 0x00007f5f53af5dca in _gst_data_queue_wait_non_empty (queue=0x7f5f3400b970) at ../subprojects/gstreamer/libs/gst/base/gstdataqueue.c:554
#3 0x00007f5f53af61f8 in gst_data_queue_pop (queue=0x7f5f3400b970, item=0x7f5f4b3ffc08) at ../subprojects/gstreamer/libs/gst/base/gstdataqueue.c:596
#4 0x00007f5f539123bc in gst_multi_queue_loop (pad=0x7f5f34009080) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2190
#5 0x00007f5f54500150 in gst_task_func (task=0x7f5f4406e830) at ../subprojects/gstreamer/gst/gsttask.c:399
#6 0x00007f5f5450155b in default_func (tdata=0x7f5f3400e170, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#7 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#8 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f3c013640) at ../glib/gthread.c:831
#9 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#10 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 7 (Thread 0x7f5f4be006c0 (LWP 508382) "multiqueue0:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f24021f90, mutex=0x558c279141a8) at ../glib/gthread-posix.c:1581
#2 0x00007f5f53db2456 in gst_stream_synchronizer_wait (self=0x558c279140a0, pad=0x7f5f3c01ecf0) at ../subprojects/gst-plugins-base/gst/playback/gststreamsynchronizer.c:357
#3 0x00007f5f53db31ed in gst_stream_synchronizer_sink_event (pad=0x7f5f3c01ecf0, parent=0x558c279140a0, event=0x7f5f4c04b010) at ../subprojects/gst-plugins-base/gst/playback/gststreamsynchronizer.c:525
#4 0x00007f5f544c58ea in gst_pad_send_event_unchecked (pad=0x7f5f3c01ecf0, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5971
#5 0x00007f5f544c422c in gst_pad_push_event_unchecked (pad=0x7f5f24004050, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5604
#6 0x00007f5f544bd9ea in push_sticky (pad=0x7f5f24004050, ev=0x7f5f4bdfeaf0, user_data=0x7f5f4bdfeb50) at ../subprojects/gstreamer/gst/gstpad.c:4083
#7 0x00007f5f544b2f26 in events_foreach (pad=0x7f5f24004050, func=0x7f5f544bd8b6 <push_sticky>, user_data=0x7f5f4bdfeb50) at ../subprojects/gstreamer/gst/gstpad.c:613
#8 0x00007f5f544bddb9 in check_sticky (pad=0x7f5f24004050, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:4142
#9 0x00007f5f544c4a25 in gst_pad_push_event (pad=0x7f5f24004050, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:5737
#10 0x00007f5f544bb20f in event_forward_func (pad=0x7f5f24004050, data=0x7f5f4bdfecf0) at ../subprojects/gstreamer/gst/gstpad.c:3156
#11 0x00007f5f544bb00b in gst_pad_forward (pad=0x7f5f3c01eaa0, forward=0x7f5f544bb0e5 <event_forward_func>, user_data=0x7f5f4bdfecf0) at ../subprojects/gstreamer/gst/gstpad.c:3110
#12 0x00007f5f544bb3d3 in gst_pad_event_default (pad=0x7f5f3c01eaa0, parent=0x7f5f24004050, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:3207
#13 0x00007f5f544c58ea in gst_pad_send_event_unchecked (pad=0x7f5f3c01eaa0, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5971
#14 0x00007f5f544c422c in gst_pad_push_event_unchecked (pad=0x558c27911da0, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5604
#15 0x00007f5f544bd9ea in push_sticky (pad=0x558c27911da0, ev=0x7f5f4bdfef30, user_data=0x7f5f4bdfef90) at ../subprojects/gstreamer/gst/gstpad.c:4083
#16 0x00007f5f544b2f26 in events_foreach (pad=0x558c27911da0, func=0x7f5f544bd8b6 <push_sticky>, user_data=0x7f5f4bdfef90) at ../subprojects/gstreamer/gst/gstpad.c:613
#17 0x00007f5f544bddb9 in check_sticky (pad=0x558c27911da0, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:4142
#18 0x00007f5f544c4a25 in gst_pad_push_event (pad=0x558c27911da0, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:5737
#19 0x00007f5f544bb20f in event_forward_func (pad=0x558c27911da0, data=0x7f5f4bdff130) at ../subprojects/gstreamer/gst/gstpad.c:3156
#20 0x00007f5f544bb00b in gst_pad_forward (pad=0x7f5f3c01e840, forward=0x7f5f544bb0e5 <event_forward_func>, user_data=0x7f5f4bdff130) at ../subprojects/gstreamer/gst/gstpad.c:3110
#21 0x00007f5f544bb3d3 in gst_pad_event_default (pad=0x7f5f3c01e840, parent=0x558c27911da0, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:3207
#22 0x00007f5f544c58ea in gst_pad_send_event_unchecked (pad=0x7f5f3c01e840, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5971
#23 0x00007f5f544c422c in gst_pad_push_event_unchecked (pad=0x7f5f3c02f7e0, event=0x7f5f4c04b010, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5604
#24 0x00007f5f544bd9ea in push_sticky (pad=0x7f5f3c02f7e0, ev=0x7f5f4bdff370, user_data=0x7f5f4bdff3d0) at ../subprojects/gstreamer/gst/gstpad.c:4083
#25 0x00007f5f544b2f26 in events_foreach (pad=0x7f5f3c02f7e0, func=0x7f5f544bd8b6 <push_sticky>, user_data=0x7f5f4bdff3d0) at ../subprojects/gstreamer/gst/gstpad.c:613
#26 0x00007f5f544bddb9 in check_sticky (pad=0x7f5f3c02f7e0, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:4142
#27 0x00007f5f544c4a25 in gst_pad_push_event (pad=0x7f5f3c02f7e0, event=0x7f5f4c04b010) at ../subprojects/gstreamer/gst/gstpad.c:5737
#28 0x00007f5f53bb3cce in gst_video_decoder_push_event (decoder=0x7f5f2401ec90, event=0x7f5f4c04b010) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1119
#29 0x00007f5f53bbbca7 in gst_video_decoder_push_event_list (decoder=0x7f5f2401ec90, events=0x7f5f14001e40 = {...}) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:2956
#30 0x00007f5f53bbc1e6 in gst_video_decoder_prepare_finish_frame (decoder=0x7f5f2401ec90, frame=0x7f5f240c1030, dropping=0) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:3004
#31 0x00007f5f53bbe1a1 in gst_video_decoder_finish_frame (decoder=0x7f5f2401ec90, frame=0x7f5f240c1030) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:3439
--Type <RET> for more, q to quit, c to continue without paging--c
#32 0x00007f5f5382c103 in theora_dec_handle_frame (bdec=0x7f5f2401ec90, frame=0x7f5f240c1030) at ../subprojects/gst-plugins-base/ext/theora/gsttheoradec.c:908
#33 0x00007f5f53bc194c in gst_video_decoder_decode_frame (decoder=0x7f5f2401ec90, frame=0x7f5f240c1030) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:3993
#34 0x00007f5f53bc10bc in gst_video_decoder_have_frame (decoder=0x7f5f2401ec90) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:3884
#35 0x00007f5f53829b27 in theora_dec_parse (decoder=0x7f5f2401ec90, frame=0x7f5f240c1030, adapter=0x7f5f1400b7e0, at_eos=0) at ../subprojects/gst-plugins-base/ext/theora/gsttheoradec.c:293
#36 0x00007f5f53bb3d88 in gst_video_decoder_parse_available (dec=0x7f5f2401ec90, at_eos=0, new_buffer=0) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1142
#37 0x00007f5f53bb8fc9 in gst_video_decoder_chain_forward (decoder=0x7f5f2401ec90, buf=0x7f5f4c04efd0, at_eos=0) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:2488
#38 0x00007f5f53bbb194 in gst_video_decoder_chain (pad=0x7f5f3c02f590, parent=0x7f5f2401ec90, buf=0x7f5f4c04efd0) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:2813
#39 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x7f5f3c02f590, type=4112, data=0x7f5f4c04efd0) at ../subprojects/gstreamer/gst/gstpad.c:4494
#40 0x00007f5f544c1051 in gst_pad_push_data (pad=0x7f5f340082a0, type=4112, data=0x7f5f4c04efd0) at ../subprojects/gstreamer/gst/gstpad.c:4770
#41 0x00007f5f544c17a4 in gst_pad_push (pad=0x7f5f340082a0, buffer=0x7f5f4c04efd0) at ../subprojects/gstreamer/gst/gstpad.c:4889
#42 0x00007f5f53911ca1 in gst_single_queue_push_one (mq=0x558c2791c000, sq=0x7f5f3400a9a0, object=0x7f5f4c04efd0, allow_drop=0x7f5f4bdffbfc) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2009
#43 0x00007f5f5391383b in gst_multi_queue_loop (pad=0x7f5f340082a0) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2345
#44 0x00007f5f54500150 in gst_task_func (task=0x7f5f4406e710) at ../subprojects/gstreamer/gst/gsttask.c:399
#45 0x00007f5f5450155b in default_func (tdata=0x7f5f3400c530, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#46 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#47 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f3c0135e0) at ../glib/gthread.c:831
#48 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#49 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 6 (Thread 0x7f5f510006c0 (LWP 508381) "typefind:sink"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f4406ead0, mutex=0x7f5f4406ea88) at ../glib/gthread-posix.c:1581
#2 0x00007f5f54500070 in gst_task_func (task=0x7f5f4406ea70) at ../subprojects/gstreamer/gst/gsttask.c:384
#3 0x00007f5f5450155b in default_func (tdata=0x7f5f34011a70, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#4 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#5 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f3c012c00) at ../glib/gthread.c:831
#6 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#7 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 5 (Thread 0x7f5f51a006c0 (LWP 508380) "typefindelement"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f040251d0, mutex=0x7f5f04025188) at ../glib/gthread-posix.c:1581
#2 0x00007f5f54500070 in gst_task_func (task=0x7f5f04025170) at ../subprojects/gstreamer/gst/gsttask.c:384
#3 0x00007f5f5450155b in default_func (tdata=0x7f5f0402ff30, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#4 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#5 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f44069b60) at ../glib/gthread.c:831
#6 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#7 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 4 (Thread 0x7f5f524006c0 (LWP 508379) "multiqueue3:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x558c2792c338, mutex=0x558c2792c330) at ../glib/gthread-posix.c:1581
#2 0x00007f5f53d5d42f in uri_src_block_probe (pad=0x558c27910f00, info=0x7f5f523ff7d0, srcpad=0x7f5f4c04de00) at ../subprojects/gst-plugins-base/gst/playback/gsturidecodebin3.c:1369
#3 0x00007f5f544bc8d2 in probe_hook_marshal (hook=0x7f5f4c031e40, data=0x7f5f523ff760) at ../subprojects/gstreamer/gst/gstpad.c:3695
#4 0x00007f5f545d1a3e in g_hook_list_marshal (hook_list=0x558c27910f98, may_recurse=1, marshaller=0x7f5f544bc5ae <probe_hook_marshal>, data=0x7f5f523ff760) at ../glib/ghook.c:674
#5 0x00007f5f544bcfe6 in do_probe_callbacks (pad=0x558c27910f00, info=0x7f5f523ff7d0, defaultval=GST_FLOW_OK) at ../subprojects/gstreamer/gst/gstpad.c:3879
#6 0x00007f5f544c0f07 in gst_pad_push_data (pad=0x558c27910f00, type=4112, data=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstpad.c:4748
#7 0x00007f5f544c17a4 in gst_pad_push (pad=0x558c27910f00, buffer=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstpad.c:4889
#8 0x00007f5f5449a00a in gst_proxy_pad_chain_default (pad=0x7f5f340122c0, parent=0x558c27910f00, buffer=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstghostpad.c:127
#9 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x7f5f340122c0, type=4112, data=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstpad.c:4494
#10 0x00007f5f544c1051 in gst_pad_push_data (pad=0x7f5f1c00b880, type=4112, data=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstpad.c:4770
#11 0x00007f5f544c17a4 in gst_pad_push (pad=0x7f5f1c00b880, buffer=0x7f5f4c046c80) at ../subprojects/gstreamer/gst/gstpad.c:4889
#12 0x00007f5f53911ca1 in gst_single_queue_push_one (mq=0x7f5f04022540, sq=0x7f5f4c04c790, object=0x7f5f4c046c80, allow_drop=0x7f5f523ffbfc) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2009
#13 0x00007f5f5391383b in gst_multi_queue_loop (pad=0x7f5f1c00b880) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2345
#14 0x00007f5f54500150 in gst_task_func (task=0x558c27936950) at ../subprojects/gstreamer/gst/gsttask.c:399
#15 0x00007f5f5450155b in default_func (tdata=0x7f5f4c04ce90, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#16 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#17 0x00007f5f5461af22 in g_thread_proxy (data=0x7f5f4c0330c0) at ../glib/gthread.c:831
#18 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#19 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 3 (Thread 0x7f5f52e006c0 (LWP 508378) "multiqueue3:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x7f5f3400b880, mutex=0x7f5f3400b858) at ../glib/gthread-posix.c:1581
#2 0x00007f5f53af5b61 in gst_data_queue_push (queue=0x7f5f3400b8b0, item=0x7f5f4c051cd0) at ../subprojects/gstreamer/libs/gst/base/gstdataqueue.c:521
#3 0x00007f5f539148c2 in gst_multi_queue_chain (pad=0x7f5f34008050, parent=0x558c2791c000, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2538
#4 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x7f5f34008050, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4494
#5 0x00007f5f544c1051 in gst_pad_push_data (pad=0x7f5f4406dd80, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4770
#6 0x00007f5f544c17a4 in gst_pad_push (pad=0x7f5f4406dd80, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4889
#7 0x00007f5f53ae3991 in gst_base_transform_chain (pad=0x7f5f4406db30, parent=0x7f5f34007ab0, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:2391
#8 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x7f5f4406db30, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4494
#9 0x00007f5f544c1051 in gst_pad_push_data (pad=0x558c27912130, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4770
#10 0x00007f5f544c17a4 in gst_pad_push (pad=0x558c27912130, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4889
#11 0x00007f5f5449a00a in gst_proxy_pad_chain_default (pad=0x558c27910060, parent=0x558c2790e060, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstghostpad.c:127
#12 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x558c27910060, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4494
#13 0x00007f5f544c1051 in gst_pad_push_data (pad=0x558c27910c90, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4770
#14 0x00007f5f544c17a4 in gst_pad_push (pad=0x558c27910c90, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4889
#15 0x00007f5f5449a00a in gst_proxy_pad_chain_default (pad=0x558c279131d0, parent=0x558c27910c90, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstghostpad.c:127
#16 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x558c279131d0, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4494
#17 0x00007f5f544c1051 in gst_pad_push_data (pad=0x7f5f1c00b3e0, type=4112, data=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4770
#18 0x00007f5f544c17a4 in gst_pad_push (pad=0x7f5f1c00b3e0, buffer=0x7f5f4c051b20) at ../subprojects/gstreamer/gst/gstpad.c:4889
#19 0x00007f5f53911ca1 in gst_single_queue_push_one (mq=0x7f5f04022540, sq=0x7f5f4c04bb70, object=0x7f5f4c051b20, allow_drop=0x7f5f52dffbfc) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2009
#20 0x00007f5f5391383b in gst_multi_queue_loop (pad=0x7f5f1c00b3e0) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2345
#21 0x00007f5f54500150 in gst_task_func (task=0x558c27936830) at ../subprojects/gstreamer/gst/gsttask.c:399
#22 0x00007f5f5450155b in default_func (tdata=0x7f5f4c04bb50, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#23 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#24 0x00007f5f5461af22 in g_thread_proxy (data=0x558c27929640) at ../glib/gthread.c:831
#25 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#26 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 2 (Thread 0x7f5f538006c0 (LWP 508377) "matroskademux2:"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f5f5463aea3 in g_cond_wait (cond=0x558c27915d10, mutex=0x558c27915ce8) at ../glib/gthread-posix.c:1581
#2 0x00007f5f53af5b61 in gst_data_queue_push (queue=0x558c27915d40, item=0x7f5f4c04e0f0) at ../subprojects/gstreamer/libs/gst/base/gstdataqueue.c:521
#3 0x00007f5f539148c2 in gst_multi_queue_chain (pad=0x7f5f1c00b630, parent=0x7f5f04022540, buffer=0x7f5f4c04e8e0) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2538
#4 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x7f5f1c00b630, type=4112, data=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4494
#5 0x00007f5f544c1051 in gst_pad_push_data (pad=0x7f5f0c00ce70, type=4112, data=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4770
#6 0x00007f5f544c17a4 in gst_pad_push (pad=0x7f5f0c00ce70, buffer=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4889
#7 0x00007f5f5449a00a in gst_proxy_pad_chain_default (pad=0x558c27912d10, parent=0x7f5f0c00ce70, buffer=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstghostpad.c:127
#8 0x00007f5f544bff19 in gst_pad_chain_data_unchecked (pad=0x558c27912d10, type=4112, data=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4494
#9 0x00007f5f544c1051 in gst_pad_push_data (pad=0x558c2792d8b0, type=4112, data=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4770
#10 0x00007f5f544c17a4 in gst_pad_push (pad=0x558c2792d8b0, buffer=0x7f5f4c04e8e0) at ../subprojects/gstreamer/gst/gstpad.c:4889
#11 0x00007f5f5386cb81 in gst_matroska_demux_parse_blockgroup_or_simpleblock (demux=0x7f5f2c00c020, ebml=0x7f5f537ffad0, cluster_time=0, cluster_offset=6546, is_simpleblock=0) at ../subprojects/gst-plugins-good/gst/matroska/matroska-demux.c:5075
#12 0x00007f5f5386f687 in gst_matroska_demux_parse_id (demux=0x7f5f2c00c020, id=160, length=46, needed=9) at ../subprojects/gst-plugins-good/gst/matroska/matroska-demux.c:5803
#13 0x00007f5f5387077e in gst_matroska_demux_loop (pad=0x7f5f34008990) at ../subprojects/gst-plugins-good/gst/matroska/matroska-demux.c:6002
#14 0x00007f5f54500150 in gst_task_func (task=0x7f5f04025a70) at ../subprojects/gstreamer/gst/gsttask.c:399
#15 0x00007f5f5450155b in default_func (tdata=0x7f5f2c009140, pool=0x558c27915030) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#16 0x00007f5f5461e052 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#17 0x00007f5f5461af22 in g_thread_proxy (data=0x558c27929120) at ../glib/gthread.c:831
#18 0x00007f5f541ba19d in start_thread (arg=<optimized out>) at pthread_create.c:442
#19 0x00007f5f5423bc60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Warning: the current language does not match this frame.
Thread 1 (Thread 0x7f5f53de03c0 (LWP 508375) "test-gst"):
#0 0x00007f5f5422e3b6 in __ppoll (fds=0x558c27917e90, nfds=1, timeout=<optimized out>, sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:42
#1 0x00007f5f544d5936 in gst_poll_wait (set=0x558c276f3040, timeout=18446744073709551615) at ../subprojects/gstreamer/gst/gstpoll.c:1468
#2 0x00007f5f5446c602 in gst_bus_timed_pop_filtered (bus=0x558c279012a0, timeout=18446744073709551615, types=GST_MESSAGE_ANY) at ../subprojects/gstreamer/gst/gstbus.c:599
#3 0x00007f5f5446c7be in gst_bus_timed_pop (bus=0x558c279012a0, timeout=18446744073709551615) at ../subprojects/gstreamer/gst/gstbus.c:638
#4 0x0000558c26b23d14 in gstreamer::auto::bus::Bus::timed_pop<core::option::Option<gstreamer::format::clock_time::ClockTime>> (self=0x7ffdaef573d8, timeout=...) at src/auto/bus.rs:120
#5 0x0000558c26b23dd9 in gstreamer::bus::{impl#1}::next (self=0x7ffdaef57418) at src/bus.rs:333
#6 0x0000558c26b0c9c7 in test_gst::main () at src/main.rs:71
#7 0x0000558c26b093eb in core::ops::function::FnOnce::call_once<fn() -> core::result::Result<(), anyhow::Error>, ()> () at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ops/function.rs:250
#8 0x0000558c26b0924e in std::sys_common::backtrace::__rust_begin_short_backtrace<fn() -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>> (f=0x558c26b0c0d0 <test_gst::main>) at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/sys_common/backtrace.rs:155
#9 0x0000558c26b04091 in std::rt::lang_start::{closure#0}<core::result::Result<(), anyhow::Error>> () at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/rt.rs:166
#10 0x0000558c26b58f61 in core::ops::function::impls::{impl#2}::call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> () at library/core/src/ops/function.rs:284
#11 std::panicking::try::do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> () at library/std/src/panicking.rs:552
#12 std::panicking::try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> () at library/std/src/panicking.rs:516
#13 std::panic::catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> () at library/std/src/panic.rs:142
#14 std::rt::lang_start_internal::{closure#2} () at library/std/src/rt.rs:148
#15 std::panicking::try::do_call<std::rt::lang_start_internal::{closure_env#2}, isize> () at library/std/src/panicking.rs:552
#16 std::panicking::try<isize, std::rt::lang_start_internal::{closure_env#2}> () at library/std/src/panicking.rs:516
#17 std::panic::catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize> () at library/std/src/panic.rs:142
#18 std::rt::lang_start_internal () at library/std/src/rt.rs:148
#19 0x0000558c26b0406a in std::rt::lang_start<core::result::Result<(), anyhow::Error>> (main=0x558c26b0c0d0 <test_gst::main>, argc=2, argv=0x7ffdaef57a18, sigpipe=0) at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/rt.rs:165
#20 0x0000558c26b0d1de in main ()
#21 0x00007f5f54156550 in __libc_start_call_main (main=main@entry=0x558c26b0d1c0 <main>, argc=argc@entry=2, argv=argv@entry=0x7ffdaef57a18) at ../sysdeps/nptl/libc_start_call_main.h:58
#22 0x00007f5f54156609 in __libc_start_main_impl (main=0x558c26b0d1c0 <main>, argc=2, argv=0x7ffdaef57a18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffdaef57a08) at ../csu/libc-start.c:360
#23 0x0000558c26aff175 in _start ()
I think the problem is in thread 4 where uridecodebin3
keeps waiting for the input source to be drained.
GST_DEBUG="*decodebin*:6,streamsynchronizer:6"
logs: gst.log
Interestingly running the very same file from http
does work:
$ cargo run -- https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/raw/main/utils/uriplaylistbin/tests/sample.mkv
cc @bilboed