After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 764020 - adaptivedemux: Deadlock on HLS and DASH streams when scrub seeking
adaptivedemux: Deadlock on HLS and DASH streams when scrub seeking
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 1.8.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
1.6.4
Depends on:
Blocks:
 
 
Reported: 2016-03-22 09:45 UTC by Thibault Saunier
Modified: 2016-04-20 13:54 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
debug log of multiqueue buffering (28.10 KB, text/x-csrc)
2016-03-23 08:17 UTC, Jan Schmidt
  Details
decodebin2: Hold new buffering_post lock while posting msgs (3.90 KB, patch)
2016-03-24 04:04 UTC, Jan Schmidt
none Details | Review
decodebin2: Hold new buffering_post lock while posting msgs (3.92 KB, patch)
2016-03-24 12:50 UTC, Jan Schmidt
committed Details | Review

Description Thibault Saunier 2016-03-22 09:45:11 UTC
A good example of such an issue is: https://ci.gstreamer.net/job/GStreamer-master-validate/2881/testReport/junit/validate.hls.playback/scrub_forward_seeking/hls_bibbop/

You can reproduce with:

$ gst-validate-launcher -t validate.hls.playback.scrub_forward_seeking.hls_bibbop -l stdout

Which starts a local http server and runs starts seeking the stream every 0.1 second for 10 seconds. 

The stacktrace is:

(gdb) t a a bt

Thread 31 (Thread 0x7fce09b6b700 (LWP 11388))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_task_func
    at gsttask.c line 317
  • #3 default_func
    at gsttaskpool.c line 68
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 30 (Thread 0x7fce08912700 (LWP 11390))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_task_func
    at gsttask.c line 317
  • #3 default_func
    at gsttaskpool.c line 68
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 29 (Thread 0x7fcdf7fff700 (LWP 11392))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_adaptive_demux_stream_download_uri
    at gstadaptivedemux.c line 2498
  • #3 gst_adaptive_demux_stream_download_fragment
    at gstadaptivedemux.c line 2617
  • #4 gst_adaptive_demux_stream_download_loop
    at gstadaptivedemux.c line 2848
  • #5 gst_task_func
    at gsttask.c line 332
  • #6 default_func
    at gsttaskpool.c line 68
  • #7 ??
    from /usr/lib/libglib-2.0.so.0
  • #8 ??
    from /usr/lib/libglib-2.0.so.0
  • #9 start_thread
    from /usr/lib/libpthread.so.0
  • #10 clone
    from /usr/lib/libc.so.6

Thread 28 (Thread 0x7fcdf77fe700 (LWP 11393))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_ts_demux_push_pending_data
    at tsdemux.c line 2654
  • #9 gst_ts_demux_handle_packet
    at tsdemux.c line 2720
  • #10 gst_ts_demux_push
    at tsdemux.c line 2789
  • #11 mpegts_base_chain
    at mpegtsbase.c line 1184
  • #12 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #17 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #18 gst_task_func
    at gsttask.c line 332
  • #19 default_func
    at gsttaskpool.c line 68
  • #20 ??
    from /usr/lib/libglib-2.0.so.0
  • #21 ??
    from /usr/lib/libglib-2.0.so.0
  • #22 start_thread
    from /usr/lib/libpthread.so.0
  • #23 clone
    from /usr/lib/libc.so.6

Thread 27 (Thread 0x7fcdf6ffd700 (LWP 11395))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_ts_demux_push_pending_data
    at tsdemux.c line 2654
  • #9 gst_ts_demux_handle_packet
    at tsdemux.c line 2710
  • #10 gst_ts_demux_push
    at tsdemux.c line 2789
  • #11 mpegts_base_chain
    at mpegtsbase.c line 1184
  • #12 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #17 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #18 gst_task_func
    at gsttask.c line 332
  • #19 default_func
    at gsttaskpool.c line 68
  • #20 ??
    from /usr/lib/libglib-2.0.so.0
  • #21 ??
    from /usr/lib/libglib-2.0.so.0
  • #22 start_thread
    from /usr/lib/libpthread.so.0
  • #23 clone
    from /usr/lib/libc.so.6

Thread 26 (Thread 0x7fcdf614b700 (LWP 11396))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_chain_buffer_or_list
    at gstqueue.c line 1201
  • #3 gst_queue_chain
    at gstqueue.c line 1299
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 692
  • #13 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #14 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #15 gst_pad_push_data
    at gstpad.c line 4408
  • #16 gst_pad_push
    at gstpad.c line 4527
  • #17 gst_tee_handle_data
    at gsttee.c line 656
  • #18 gst_tee_chain
    at gsttee.c line 776
  • #19 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #20 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #21 gst_pad_push_data
    at gstpad.c line 4408
  • #22 gst_pad_push
    at gstpad.c line 4527
  • #23 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #24 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #25 gst_pad_push_data
    at gstpad.c line 4408
  • #26 gst_pad_push
    at gstpad.c line 4527
  • #27 gst_selector_pad_chain
    at gstinputselector.c line 1109
  • #28 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #29 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #30 gst_pad_push_data
    at gstpad.c line 4408
  • #31 gst_pad_push
    at gstpad.c line 4527
  • #32 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #33 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #34 gst_pad_push_data
    at gstpad.c line 4408
  • #35 gst_pad_push
    at gstpad.c line 4527
  • #36 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #37 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #38 gst_pad_push_data
    at gstpad.c line 4408
  • #39 gst_pad_push
    at gstpad.c line 4527
  • #40 gst_audio_decoder_push_forward
    at gstaudiodecoder.c line 974
  • #41 gst_audio_decoder_output
    at gstaudiodecoder.c line 1050
  • #42 gst_audio_decoder_finish_frame
    at gstaudiodecoder.c line 1392
  • #43 gst_ffmpegauddec_handle_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #44 gst_audio_decoder_handle_frame
    at gstaudiodecoder.c line 1452
  • #45 gst_audio_decoder_push_buffers
    at gstaudiodecoder.c line 1550
  • #46 gst_audio_decoder_chain_forward
    at gstaudiodecoder.c line 1664
  • #47 gst_audio_decoder_chain
    at gstaudiodecoder.c line 1922
  • #48 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #49 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #50 gst_pad_push_data
    at gstpad.c line 4408
  • #51 gst_pad_push
    at gstpad.c line 4527
  • #52 gst_base_parse_push_frame
    at gstbaseparse.c line 2510
  • #53 gst_base_parse_handle_and_push_frame
    at gstbaseparse.c line 2329
  • #54 gst_base_parse_finish_frame
    at gstbaseparse.c line 2668
  • #55 gst_aac_parse_handle_frame
    at gstaacparse.c line 1362
  • #56 gst_base_parse_handle_buffer
    at gstbaseparse.c line 2143
  • #57 gst_base_parse_chain
    at gstbaseparse.c line 3198
  • #58 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #59 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #60 gst_pad_push_data
    at gstpad.c line 4408
  • #61 gst_pad_push
    at gstpad.c line 4527
  • #62 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #63 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #64 gst_task_func
    at gsttask.c line 332
  • #65 default_func
    at gsttaskpool.c line 68
  • #66 ??
    from /usr/lib/libglib-2.0.so.0
  • #67 ??
    from /usr/lib/libglib-2.0.so.0
  • #68 start_thread
    from /usr/lib/libpthread.so.0
  • #69 clone
    from /usr/lib/libc.so.6

Thread 25 (Thread 0x7fcdf5721700 (LWP 11397))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_chain_buffer_or_list
    at gstqueue.c line 1201
  • #3 gst_queue_chain
    at gstqueue.c line 1299
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_deinterlace_chain
    at gstdeinterlace.c line 2059
  • #17 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #19 gst_pad_push_data
    at gstpad.c line 4408
  • #20 gst_pad_push
    at gstpad.c line 4527
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #22 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #23 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #24 gst_pad_push_data
    at gstpad.c line 4408
  • #25 gst_pad_push
    at gstpad.c line 4527
  • #26 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #27 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #28 gst_pad_push_data
    at gstpad.c line 4408
  • #29 gst_pad_push
    at gstpad.c line 4527
  • #30 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 692
  • #31 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #32 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #33 gst_pad_push_data
    at gstpad.c line 4408
  • #34 gst_pad_push
    at gstpad.c line 4527
  • #35 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #36 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #37 gst_pad_push_data
    at gstpad.c line 4408
  • #38 gst_pad_push
    at gstpad.c line 4527
  • #39 gst_selector_pad_chain
    at gstinputselector.c line 1109
  • #40 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #41 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #42 gst_pad_push_data
    at gstpad.c line 4408
  • #43 gst_pad_push
    at gstpad.c line 4527
  • #44 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #45 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #46 gst_pad_push_data
    at gstpad.c line 4408
  • #47 gst_pad_push
    at gstpad.c line 4527
  • #48 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #49 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #50 gst_pad_push_data
    at gstpad.c line 4408
  • #51 gst_pad_push
    at gstpad.c line 4527
  • #52 gst_video_decoder_clip_and_push_buf
    at gstvideodecoder.c line 3215
  • #53 gst_video_decoder_finish_frame
    at gstvideodecoder.c line 3108
  • #54 gst_ffmpegviddec_video_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #55 gst_ffmpegviddec_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #56 gst_ffmpegviddec_handle_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #57 gst_video_decoder_decode_frame
    at gstvideodecoder.c line 3417
  • #58 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 2201
  • #59 gst_video_decoder_chain
    at gstvideodecoder.c line 2503
  • #60 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #61 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #62 gst_pad_push_data
    at gstpad.c line 4408
  • #63 gst_pad_push
    at gstpad.c line 4527
  • #64 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #65 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #66 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #67 gst_pad_push_data
    at gstpad.c line 4408
  • #68 gst_pad_push
    at gstpad.c line 4527
  • #69 gst_base_parse_push_frame
    at gstbaseparse.c line 2510
  • #70 gst_base_parse_handle_and_push_frame
    at gstbaseparse.c line 2329
  • #71 gst_base_parse_finish_frame
    at gstbaseparse.c line 2668
  • #72 gst_h264_parse_handle_frame
    at gsth264parse.c line 1228
  • #73 gst_base_parse_handle_buffer
    at gstbaseparse.c line 2143
  • #74 gst_base_parse_chain
    at gstbaseparse.c line 3198
  • #75 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #76 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #77 gst_pad_push_data
    at gstpad.c line 4408
  • #78 gst_pad_push
    at gstpad.c line 4527
  • #79 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #80 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #81 gst_task_func
    at gsttask.c line 332
  • #82 default_func
    at gsttaskpool.c line 68
  • #83 ??
    from /usr/lib/libglib-2.0.so.0
  • #84 ??
    from /usr/lib/libglib-2.0.so.0
  • #85 start_thread
    from /usr/lib/libpthread.so.0
  • #86 clone
    from /usr/lib/libc.so.6

Thread 14 (Thread 0x7fcdcbb86700 (LWP 11409))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_base_sink_wait_preroll
    at gstbasesink.c line 2212
  • #3 gst_base_sink_do_preroll
    at gstbasesink.c line 2306
  • #4 gst_base_sink_do_sync
    at gstbasesink.c line 2508
  • #5 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3494
  • #6 gst_base_sink_chain_main
    at gstbasesink.c line 3655
  • #7 gst_base_sink_chain
    at gstbasesink.c line 3684
  • #8 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #17 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #19 gst_pad_push_data
    at gstpad.c line 4408
  • #20 gst_pad_push
    at gstpad.c line 4527
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #22 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2062
  • #23 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #24 gst_pad_push_data
    at gstpad.c line 4408
  • #25 gst_pad_push

Comment 1 Thibault Saunier 2016-03-22 09:56:21 UTC
Pasting some IRC discussion we had about this:

>bilboed	oh, could this be because of "not-completely-linked" parts in decodebin ?
>thiblahute	bilboed, You mean https://bugzilla.gnome.org/show_bug.cgi?id=606382 ? or?
>bilboed	notice how the two decoder threads are stuck in a query probe
>thiblahute	Yes, saw that, not sure what those probes are?
>bilboed	decodebin2's source_pad_blocked_cb
>bilboed	oh balls, it's indeed due to different groups
>thiblahute	Yeah, not surprising I think, we know it is still racy
>thiblahute	bilboed, How did you come to that conclusion?
>bilboed	because two decoders are currently pushing in the playsink queues, and two decoders are blocked in that query probe
>bilboed	i.e ... two groups
>thiblahute	Indeed.
>thaytan	thiblahute, bilboed: I've been looking at that one too
>bilboed	great, at least it's not a false positive
>thaytan	It's one of many deadlocks in hlsdemux/adaptivedemux when switching bitrates / groups
>thaytan	and seeking, or pausing due to buffering
>thiblahute	thaytan, We do not have a bug for following those do we?
>thaytan	no, not that I know of
>thiblahute	OK, I guess we can use the one I just opened https://bugzilla.gnome.org/show_bug.cgi?id=764020
>there's quite a few places it can deadlock on the manifest lock
>thaytan	or where things can hang on state locks trying to simultaneously change the state of the uri-fetching source bins
Comment 2 Thibault Saunier 2016-03-22 17:51:47 UTC
Another deadlock happening on dash demux:

(gdb) t a a bt

Thread 22 (Thread 0x7fa23a4da700 (LWP 30167))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_task_func
    at gsttask.c line 317
  • #3 default_func
    at gsttaskpool.c line 68
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 21 (Thread 0x7fa23905a700 (LWP 30169))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_qtdemux_decorate_and_push_buffer
    at qtdemux.c line 4993
  • #9 gst_qtdemux_process_adapter
    at qtdemux.c line 6205
  • #10 gst_qtdemux_chain
    at qtdemux.c line 5706
  • #11 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #12 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #13 gst_pad_push_data
    at gstpad.c line 4408
  • #14 gst_pad_push
    at gstpad.c line 4527
  • #15 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #16 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #17 gst_task_func
    at gsttask.c line 332
  • #18 default_func
    at gsttaskpool.c line 68
  • #19 ??
    from /usr/lib/libglib-2.0.so.0
  • #20 ??
    from /usr/lib/libglib-2.0.so.0
  • #21 start_thread
    from /usr/lib/libpthread.so.0
  • #22 clone
    from /usr/lib/libc.so.6

Thread 20 (Thread 0x7fa22bfff700 (LWP 30170))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_qtdemux_decorate_and_push_buffer
    at qtdemux.c line 4993
  • #9 gst_qtdemux_process_adapter
    at qtdemux.c line 6205
  • #10 gst_qtdemux_chain
    at qtdemux.c line 5706
  • #11 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #12 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #13 gst_pad_push_data
    at gstpad.c line 4408
  • #14 gst_pad_push
    at gstpad.c line 4527
  • #15 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #16 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #17 gst_task_func
    at gsttask.c line 332
  • #18 default_func
    at gsttaskpool.c line 68
  • #19 ??
    from /usr/lib/libglib-2.0.so.0
  • #20 ??
    from /usr/lib/libglib-2.0.so.0
  • #21 start_thread
    from /usr/lib/libpthread.so.0
  • #22 clone
    from /usr/lib/libc.so.6

Thread 19 (Thread 0x7fa22b7fe700 (LWP 30171))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_adaptive_demux_stream_push_buffer
    at gstadaptivedemux.c line 1936
  • #9 gst_dash_demux_data_received
    at gstdashdemux.c line 1711
  • #10 _src_chain
    at gstadaptivedemux.c line 2081
  • #11 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #12 gst_pad_push_data
    at gstpad.c line 4408
  • #13 gst_pad_push
    at gstpad.c line 4527
  • #14 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #15 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #16 gst_pad_push_data
    at gstpad.c line 4408
  • #17 gst_pad_push
    at gstpad.c line 4527
  • #18 gst_queue2_push_one
    at gstqueue2.c line 2824
  • #19 gst_queue2_loop
    at gstqueue2.c line 2946
  • #20 gst_task_func
    at gsttask.c line 332
  • #21 default_func
    at gsttaskpool.c line 68
  • #22 ??
    from /usr/lib/libglib-2.0.so.0
  • #23 ??
    from /usr/lib/libglib-2.0.so.0
  • #24 start_thread
    from /usr/lib/libpthread.so.0
  • #25 clone
    from /usr/lib/libc.so.6

Thread 18 (Thread 0x7fa22affd700 (LWP 30172))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_adaptive_demux_stream_download_uri
    at gstadaptivedemux.c line 2498
  • #3 gst_adaptive_demux_stream_download_fragment
    at gstadaptivedemux.c line 2617
  • #4 gst_adaptive_demux_stream_download_loop
    at gstadaptivedemux.c line 2848
  • #5 gst_task_func
    at gsttask.c line 332
  • #6 default_func
    at gsttaskpool.c line 68
  • #7 ??
    from /usr/lib/libglib-2.0.so.0
  • #8 ??
    from /usr/lib/libglib-2.0.so.0
  • #9 start_thread
    from /usr/lib/libpthread.so.0
  • #10 clone
    from /usr/lib/libc.so.6

Thread 17 (Thread 0x7fa22a7fc700 (LWP 30173))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_adaptive_demux_stream_download_uri
    at gstadaptivedemux.c line 2498
  • #3 gst_adaptive_demux_stream_download_fragment
    at gstadaptivedemux.c line 2617
  • #4 gst_adaptive_demux_stream_download_loop
    at gstadaptivedemux.c line 2848
  • #5 gst_task_func
    at gsttask.c line 332
  • #6 default_func
    at gsttaskpool.c line 68
  • #7 ??
    from /usr/lib/libglib-2.0.so.0
  • #8 ??
    from /usr/lib/libglib-2.0.so.0
  • #9 start_thread
    from /usr/lib/libpthread.so.0
  • #10 clone
    from /usr/lib/libc.so.6

Thread 16 (Thread 0x7fa229ffb700 (LWP 30174))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_data_queue_push
    at gstdataqueue.c line 520
  • #3 gst_multi_queue_chain
    at gstmultiqueue.c line 1867
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_adaptive_demux_stream_push_buffer
    at gstadaptivedemux.c line 1936
  • #9 gst_dash_demux_data_received
    at gstdashdemux.c line 1711
  • #10 _src_chain
    at gstadaptivedemux.c line 2081
  • #11 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #12 gst_pad_push_data
    at gstpad.c line 4408
  • #13 gst_pad_push
    at gstpad.c line 4527
  • #14 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #15 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #16 gst_pad_push_data
    at gstpad.c line 4408
  • #17 gst_pad_push
    at gstpad.c line 4527
  • #18 gst_queue2_push_one
    at gstqueue2.c line 2824
  • #19 gst_queue2_loop
    at gstqueue2.c line 2946
  • #20 gst_task_func
    at gsttask.c line 332
  • #21 default_func
    at gsttaskpool.c line 68
  • #22 ??
    from /usr/lib/libglib-2.0.so.0
  • #23 ??
    from /usr/lib/libglib-2.0.so.0
  • #24 start_thread
    from /usr/lib/libpthread.so.0
  • #25 clone
    from /usr/lib/libc.so.6

Thread 15 (Thread 0x7fa2297fa700 (LWP 30175))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_task_func
    at gsttask.c line 317
  • #3 default_func
    at gsttaskpool.c line 68
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 14 (Thread 0x7fa228ff9700 (LWP 30176))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_task_func
    at gsttask.c line 317
  • #3 default_func
    at gsttaskpool.c line 68
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 13 (Thread 0x7fa20bfff700 (LWP 30179))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_chain_buffer_or_list
    at gstqueue.c line 1201
  • #3 gst_queue_chain
    at gstqueue.c line 1299
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_deinterlace_chain
    at gstdeinterlace.c line 2059
  • #17 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #19 gst_pad_push_data
    at gstpad.c line 4408
  • #20 gst_pad_push
    at gstpad.c line 4527
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #22 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #23 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #24 gst_pad_push_data
    at gstpad.c line 4408
  • #25 gst_pad_push
    at gstpad.c line 4527
  • #26 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #27 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #28 gst_pad_push_data
    at gstpad.c line 4408
  • #29 gst_pad_push
    at gstpad.c line 4527
  • #30 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 692
  • #31 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #32 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #33 gst_pad_push_data
    at gstpad.c line 4408
  • #34 gst_pad_push
    at gstpad.c line 4527
  • #35 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #36 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #37 gst_pad_push_data
    at gstpad.c line 4408
  • #38 gst_pad_push
    at gstpad.c line 4527
  • #39 gst_selector_pad_chain
    at gstinputselector.c line 1109
  • #40 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #41 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #42 gst_pad_push_data
    at gstpad.c line 4408
  • #43 gst_pad_push
    at gstpad.c line 4527
  • #44 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #45 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #46 gst_pad_push_data
    at gstpad.c line 4408
  • #47 gst_pad_push
    at gstpad.c line 4527
  • #48 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #49 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #50 gst_pad_push_data
    at gstpad.c line 4408
  • #51 gst_pad_push
    at gstpad.c line 4527
  • #52 gst_video_decoder_clip_and_push_buf
    at gstvideodecoder.c line 3215
  • #53 gst_video_decoder_finish_frame
    at gstvideodecoder.c line 3108
  • #54 gst_ffmpegviddec_video_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #55 gst_ffmpegviddec_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #56 gst_ffmpegviddec_handle_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #57 gst_video_decoder_decode_frame
    at gstvideodecoder.c line 3417
  • #58 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 2201
  • #59 gst_video_decoder_chain
    at gstvideodecoder.c line 2503
  • #60 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #61 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #62 gst_pad_push_data
    at gstpad.c line 4408
  • #63 gst_pad_push
    at gstpad.c line 4527
  • #64 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #65 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #66 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #67 gst_pad_push_data
    at gstpad.c line 4408
  • #68 gst_pad_push
    at gstpad.c line 4527
  • #69 gst_base_parse_push_frame
    at gstbaseparse.c line 2510
  • #70 gst_base_parse_handle_and_push_frame
    at gstbaseparse.c line 2329
  • #71 gst_base_parse_finish_frame
    at gstbaseparse.c line 2668
  • #72 gst_h264_parse_handle_frame_packetized
    at gsth264parse.c line 1021
  • #73 gst_h264_parse_handle_frame
    at gsth264parse.c line 1065
  • #74 gst_base_parse_handle_buffer
    at gstbaseparse.c line 2143
  • #75 gst_base_parse_chain
    at gstbaseparse.c line 3198
  • #76 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #77 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #78 gst_pad_push_data
    at gstpad.c line 4408
  • #79 gst_pad_push
    at gstpad.c line 4527
  • #80 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #81 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #82 gst_task_func
    at gsttask.c line 332
  • #83 default_func
    at gsttaskpool.c line 68
  • #84 ??
    from /usr/lib/libglib-2.0.so.0
  • #85 ??
    from /usr/lib/libglib-2.0.so.0
  • #86 start_thread
    from /usr/lib/libpthread.so.0
  • #87 clone
    from /usr/lib/libc.so.6

Thread 12 (Thread 0x7fa20b7fe700 (LWP 30180))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_chain_buffer_or_list
    at gstqueue.c line 1201
  • #3 gst_queue_chain
    at gstqueue.c line 1299
  • #4 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #5 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #6 gst_pad_push_data
    at gstpad.c line 4408
  • #7 gst_pad_push
    at gstpad.c line 4527
  • #8 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 692
  • #13 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #14 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #15 gst_pad_push_data
    at gstpad.c line 4408
  • #16 gst_pad_push
    at gstpad.c line 4527
  • #17 gst_tee_handle_data
    at gsttee.c line 656
  • #18 gst_tee_chain
    at gsttee.c line 776
  • #19 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #20 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #21 gst_pad_push_data
    at gstpad.c line 4408
  • #22 gst_pad_push
    at gstpad.c line 4527
  • #23 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #24 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #25 gst_pad_push_data
    at gstpad.c line 4408
  • #26 gst_pad_push
    at gstpad.c line 4527
  • #27 gst_selector_pad_chain
    at gstinputselector.c line 1109
  • #28 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #29 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #30 gst_pad_push_data
    at gstpad.c line 4408
  • #31 gst_pad_push
    at gstpad.c line 4527
  • #32 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #33 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #34 gst_pad_push_data
    at gstpad.c line 4408
  • #35 gst_pad_push
    at gstpad.c line 4527
  • #36 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #37 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #38 gst_pad_push_data
    at gstpad.c line 4408
  • #39 gst_pad_push
    at gstpad.c line 4527
  • #40 gst_audio_decoder_push_forward
    at gstaudiodecoder.c line 974
  • #41 gst_audio_decoder_output
    at gstaudiodecoder.c line 1050
  • #42 gst_audio_decoder_finish_frame
    at gstaudiodecoder.c line 1392
  • #43 gst_ffmpegauddec_handle_frame
    from /home/thiblahute/devel/gstreamer/master/gst-libav/ext/libav/.libs/libgstlibav.so
  • #44 gst_audio_decoder_handle_frame
    at gstaudiodecoder.c line 1452
  • #45 gst_audio_decoder_push_buffers
    at gstaudiodecoder.c line 1550
  • #46 gst_audio_decoder_chain_forward
    at gstaudiodecoder.c line 1664
  • #47 gst_audio_decoder_chain
    at gstaudiodecoder.c line 1922
  • #48 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #49 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #50 gst_pad_push_data
    at gstpad.c line 4408
  • #51 gst_pad_push
    at gstpad.c line 4527
  • #52 gst_base_parse_push_frame
    at gstbaseparse.c line 2510
  • #53 gst_base_parse_chain
    at gstbaseparse.c line 3121
  • #54 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #55 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #56 gst_pad_push_data
    at gstpad.c line 4408
  • #57 gst_pad_push
    at gstpad.c line 4527
  • #58 gst_single_queue_push_one
    at gstmultiqueue.c line 1394
  • #59 gst_multi_queue_loop
    at gstmultiqueue.c line 1678
  • #60 gst_task_func
    at gsttask.c line 332
  • #61 default_func
    at gsttaskpool.c line 68
  • #62 ??
    from /usr/lib/libglib-2.0.so.0
  • #63 ??
    from /usr/lib/libglib-2.0.so.0
  • #64 start_thread
    from /usr/lib/libpthread.so.0
  • #65 clone
    from /usr/lib/libc.so.6

Thread 3 (Thread 0x7fa200d94700 (LWP 30189))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_base_sink_wait_preroll
    at gstbasesink.c line 2212
  • #3 gst_base_sink_do_preroll
    at gstbasesink.c line 2306
  • #4 gst_base_sink_do_sync
    at gstbasesink.c line 2508
  • #5 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3494
  • #6 gst_base_sink_chain_main
    at gstbasesink.c line 3655
  • #7 gst_base_sink_chain
    at gstbasesink.c line 3684
  • #8 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #17 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #19 gst_pad_push_data
    at gstpad.c line 4408
  • #20 gst_pad_push
    at gstpad.c line 4527
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #22 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #23 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #24 gst_pad_push_data
    at gstpad.c line 4408
  • #25 gst_pad_push
    at gstpad.c line 4527
  • #26 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #27 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #29 gst_pad_push_data
    at gstpad.c line 4408
  • #30 gst_pad_push
    at gstpad.c line 4527
  • #31 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #32 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #33 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #34 gst_pad_push_data
    at gstpad.c line 4408
  • #35 gst_pad_push
    at gstpad.c line 4527
  • #36 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #37 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #38 gst_pad_push_data
    at gstpad.c line 4408
  • #39 gst_pad_push
    at gstpad.c line 4527
  • #40 gst_queue_push_one
    at gstqueue.c line 1338
  • #41 gst_queue_loop
    at gstqueue.c line 1485
  • #42 gst_task_func
    at gsttask.c line 332
  • #43 default_func
    at gsttaskpool.c line 68
  • #44 ??
    from /usr/lib/libglib-2.0.so.0
  • #45 ??
    from /usr/lib/libglib-2.0.so.0
  • #46 start_thread
    from /usr/lib/libpthread.so.0
  • #47 clone
    from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fa1d7bdd700 (LWP 30190))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_base_sink_wait_preroll
    at gstbasesink.c line 2212
  • #3 gst_base_sink_do_preroll
    at gstbasesink.c line 2306
  • #4 gst_base_sink_do_sync
    at gstbasesink.c line 2508
  • #5 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3494
  • #6 gst_base_sink_chain_main
    at gstbasesink.c line 3655
  • #7 gst_base_sink_chain
    at gstbasesink.c line 3684
  • #8 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #10 gst_pad_push_data
    at gstpad.c line 4408
  • #11 gst_pad_push
    at gstpad.c line 4527
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #13 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #14 gst_pad_push_data
    at gstpad.c line 4408
  • #15 gst_pad_push
    at gstpad.c line 4527
  • #16 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #17 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #19 gst_pad_push_data
    at gstpad.c line 4408
  • #20 gst_pad_push
    at gstpad.c line 4527
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #22 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #23 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #24 gst_pad_push_data
    at gstpad.c line 4408
  • #25 gst_pad_push
    at gstpad.c line 4527
  • #26 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #27 gst_validate_pad_monitor_chain_func
    at gst-validate-pad-monitor.c line 2071
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #29 gst_pad_push_data
    at gstpad.c line 4408
  • #30 gst_pad_push
    at gstpad.c line 4527
  • #31 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #32 gst_pad_chain_data_unchecked
    at gstpad.c line 4156
  • #33 gst_pad_push_data
    at gstpad.c line 4408
  • #34 gst_pad_push
    at gstpad.c line 4527
  • #35 gst_queue_push_one
    at gstqueue.c line 1338
  • #36 gst_queue_loop
    at gstqueue.c line 1485
  • #37 gst_task_func
    at gsttask.c line 332
  • #38 default_func
    at gsttaskpool.c line 68
  • #39 ??
    from /usr/lib/libglib-2.0.so.0
  • #40 ??
    from /usr/lib/libglib-2.0.so.0
  • #41 start_thread
    from /usr/lib/libpthread.so.0
  • #42 clone
    from /usr/lib/libc.so.6

Comment 3 Jan Schmidt 2016-03-23 08:17:13 UTC
Created attachment 324570 [details]
debug log of multiqueue buffering

Debug log snippet that shows a problem - multiqueue1 posts buffering msg 0x7f526401b610 (seqnum 5196 - 98%). Later it posts 0x7f5230968740 (seqnum 5199 - 100%) from the same thread id  - 0x7f526813bed0.

Somehow, after processing through several intermediate buses (and presumably decodebin and other handle_message functions) the order of the 2 messages is reversed, and the app receives the 98% buffering message last and never recovers.
Comment 4 Jan Schmidt 2016-03-24 04:04:14 UTC
Created attachment 324643 [details] [review]
decodebin2: Hold new buffering_post lock while posting msgs

There's a small window between decodebin choosing a buffering level
to post and another thread choosing a different buffering level
where things can race. Close that window by holding a new lock
that's only for posting buffering messages - like what was done
in multiqueue.
Comment 5 Jan Schmidt 2016-03-24 05:01:32 UTC
This patch fixes the DASH seeking case, and improves HLS but doesn't fix it entirely. HLS does more recreating of pads and can hang / deadlock in different ways.
Comment 6 Sebastian Dröge (slomo) 2016-03-24 07:19:34 UTC
Review of attachment 324643 [details] [review]:

Looks good to me, something for 1.8.1

::: gst/playback/gstdecodebin2.c
@@ +5474,3 @@
   }
 
   if (drop)

if (foo) bar else { baz } doesn't give a compiler warning anymore? Please add some curly braces :)
Comment 7 Jan Schmidt 2016-03-24 12:50:43 UTC
Created attachment 324672 [details] [review]
decodebin2: Hold new buffering_post lock while posting msgs

There's a small window between decodebin choosing a buffering level
to post and another thread choosing a different buffering level
where things can race. Close that window by holding a new lock
that's only for posting buffering messages - like what was done
in multiqueue.
Comment 8 Sebastian Dröge (slomo) 2016-03-24 13:03:32 UTC
Attachment 324672 [details] pushed as fd92bdf - decodebin2: Hold new buffering_post lock while posting msgs