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 753080 - queue2: Doesn't push the flush stop on its thread
queue2: Doesn't push the flush stop on its thread
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-07-30 21:34 UTC by Olivier Crête
Modified: 2018-11-03 12:29 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
queue2: Forward flush stop through the queue. (1.63 KB, patch)
2015-07-30 21:34 UTC, Olivier Crête
needs-work Details | Review

Description Olivier Crête 2015-07-30 21:34:12 UTC
I have this backtrace where a flush stop event from a demuxer ends push making a stick stream-start be pushed down and then get's stuck in playsink's pad probe. So it causes a deadlock.

I'm attaching a patch that just makes queue2 put the flush-stop in the queue, but I guess the other option would be to make playsink's probe drop stick events and just wait for buffer/gap before continuing.

My test is:
GST_DEBUG=2 GST_GL_XINITTHREADS=1 DISPLAY=:1 GST_VALIDATE_SCENARIO=change_state_intensive gdb --args gst-validate-1.0  playbin uri=http://127.0.0.1:8079/defaults/ogg/vorbis_theora.1.ogg audio-sink='fakesink sync=true' video-sink='fakesink sync=true' --set-media-info "/home/ocrete/gst-validate/gst-integration-testsuites/medias/defaults/online-streams-infos/http/vorbis_theora.1.ogg.stream_info

Here is the stack trace:

Thread 5 (Thread 0x7fffd71a3700 (LWP 2553))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1395
  • #2 do_probe_callbacks
    at gstpad.c line 3516
  • #3 gst_pad_push_event_unchecked
    at gstpad.c line 5031
  • #4 push_sticky
    at gstpad.c line 3651
  • #5 events_foreach
    at gstpad.c line 590
  • #6 check_sticky
    at gstpad.c line 3707
  • #7 gst_pad_push_event
    at gstpad.c line 5189
  • #8 event_forward_func
    at gstpad.c line 2884
  • #9 gst_pad_forward
    at gstpad.c line 2838
  • #10 gst_pad_event_default
    at gstpad.c line 2935
  • #11 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #12 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #13 push_sticky
    at gstpad.c line 3651
  • #14 events_foreach
    at gstpad.c line 590
  • #15 check_sticky
    at gstpad.c line 3707
  • #16 gst_pad_push_event
    at gstpad.c line 5189
  • #17 gst_selector_pad_event
    at gstinputselector.c line 632
  • #18 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #19 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #20 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #21 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #22 push_sticky
    at gstpad.c line 3651
  • #23 events_foreach
    at gstpad.c line 590
  • #24 check_sticky
    at gstpad.c line 3707
  • #25 gst_pad_push_event
    at gstpad.c line 5189
  • #26 event_forward_func
    at gstpad.c line 2884
  • #27 gst_pad_forward
    at gstpad.c line 2838
  • #28 gst_pad_event_default
    at gstpad.c line 2935
  • #29 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #30 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #31 push_sticky
    at gstpad.c line 3651
  • #32 events_foreach
    at gstpad.c line 590
  • #33 check_sticky
    at gstpad.c line 3707
  • #34 gst_pad_push_event
    at gstpad.c line 5189
  • #35 event_forward_func
    at gstpad.c line 2884
  • #36 gst_pad_forward
    at gstpad.c line 2838
  • #37 gst_pad_event_default
    at gstpad.c line 2935
  • #38 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #39 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #40 gst_pad_push_event
    at gstpad.c line 5195
  • #41 gst_video_decoder_push_event
    at gstvideodecoder.c line 934
  • #42 gst_video_decoder_sink_event_default
    at gstvideodecoder.c line 1374
  • #43 gst_video_decoder_sink_event
    at gstvideodecoder.c line 1410
  • #44 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #45 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #46 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #47 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #48 gst_pad_push_event
    at gstpad.c line 5195
  • #49 gst_multi_queue_sink_event
    at gstmultiqueue.c line 1792
  • #50 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #51 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #52 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #53 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #54 gst_pad_push_event
    at gstpad.c line 5195
  • #55 gst_ogg_demux_send_event
    at gstoggdemux.c line 4592
  • #56 gst_ogg_demux_sink_event
    at gstoggdemux.c line 2322
  • #57 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #58 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #59 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #60 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #61 gst_pad_push_event
    at gstpad.c line 5195
  • #62 gst_type_find_element_sink_event
    at gsttypefindelement.c line 695
  • #63 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #64 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #65 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #66 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #67 gst_pad_push_event
    at gstpad.c line 5195
  • #68 event_forward_func
    at gstpad.c line 2884
  • #69 gst_pad_forward
    at gstpad.c line 2838
  • #70 gst_pad_event_default
    at gstpad.c line 2935
  • #71 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #72 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #73 gst_pad_push_event
    at gstpad.c line 5195
  • #74 gst_queue2_handle_sink_event
    at gstqueue2.c line 2310
  • #75 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #76 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #77 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #78 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #79 gst_pad_push_event
    at gstpad.c line 5195
  • #80 gst_type_find_element_sink_event
    at gsttypefindelement.c line 695
  • #81 gst_validate_pad_monitor_downstream_event_check
    at gst-validate-pad-monitor.c line 1788
  • #82 gst_validate_pad_monitor_sink_event_func
    at gst-validate-pad-monitor.c line 2103
  • #83 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #84 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #85 gst_pad_push_event
    at gstpad.c line 5195
  • #86 gst_base_src_perform_seek
    at gstbasesrc.c line 1681
  • #87 gst_base_src_default_event
    at gstbasesrc.c line 1990
  • #88 gst_base_src_event
    at gstbasesrc.c line 2042
  • #89 gst_validate_pad_monitor_src_event_check
    at gst-validate-pad-monitor.c line 1873
  • #90 gst_validate_pad_monitor_src_event_func
    at gst-validate-pad-monitor.c line 2121
  • #91 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #92 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #93 gst_pad_push_event
    at gstpad.c line 5195
  • #94 gst_type_find_element_src_event
    at gsttypefindelement.c line 518
  • #95 gst_validate_pad_monitor_src_event_check
    at gst-validate-pad-monitor.c line 1873
  • #96 gst_validate_pad_monitor_src_event_func
    at gst-validate-pad-monitor.c line 2121
  • #97 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #98 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #99 gst_pad_push_event
    at gstpad.c line 5195
  • #100 gst_queue2_handle_src_event
    at gstqueue2.c line 2898
  • #101 gst_validate_pad_monitor_src_event_check
    at gst-validate-pad-monitor.c line 1873
  • #102 gst_validate_pad_monitor_src_event_func
    at gst-validate-pad-monitor.c line 2121
  • #103 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #104 gst_pad_push_event_unchecked
    at #105 0x00007ffff6295e22 in gst_pad_push_event (pad=0x7fffd8035170 [GstGhostPad], event=0x7fffb0003980) at gstpad.c line 5195
  • #106 event_forward_func
    at gstpad.c line 2884
  • #107 gst_pad_forward
    at gstpad.c line 2838
  • #108 gst_pad_event_default
    at gstpad.c line 2935
  • #109 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #110 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #111 gst_pad_push_event
    at gstpad.c line 5195
  • #112 gst_type_find_element_src_event
    at gsttypefindelement.c line 518
  • #113 gst_validate_pad_monitor_src_event_check
    at gst-validate-pad-monitor.c line 1873
  • #114 gst_validate_pad_monitor_src_event_func
    at gst-validate-pad-monitor.c line 2121
  • #115 gst_pad_send_event_unchecked
    at gstpad.c line 5388
  • #116 gst_pad_push_event_unchecked
    at gstpad.c line 5064
  • #117 gst_pad_push_event
    at gstpad.c line 5195
  • #118 gst_ogg_demux_loop_push
    at gstoggdemux.c line 4885
  • #119 g_thread_proxy
    at gthread.c line 764
  • #120 start_thread
    at pthread_create.c line 333
  • #121 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Comment 1 Olivier Crête 2015-07-30 21:34:31 UTC
Created attachment 308497 [details] [review]
queue2: Forward flush stop through the queue.
Comment 2 Olivier Crête 2015-07-30 21:38:25 UTC
Review of attachment 308497 [details] [review]:

This breaks qtdemux playback, so it can't be merged as-is..
Comment 3 GStreamer system administrator 2018-11-03 12:29:24 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/126.