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 680441 - [0.11] playbin? audiodecoder? regression: easily locks up when seeking
[0.11] playbin? audiodecoder? regression: easily locks up when seeking
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.11.x
Other Linux
: Normal blocker
: 0.11.x
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-07-23 12:21 UTC by Tim-Philipp Müller
Modified: 2012-09-10 09:11 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tim-Philipp Müller 2012-07-23 12:21:31 UTC
Some recent change makes it quite easy to lock up totem when seeking.

 1) totem ~/media/shortclips/
 2) keep right arrow key pressed


(gdb) thread apply all bt

Thread 1 (Thread 0x7f60e1edb980 (LWP 20218))

  • #0 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S line 136
  • #1 _L_lock_997
    from /lib/x86_64-linux-gnu/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 82
  • #3 gst_pad_pause_task
    at gstpad.c line 5173
  • #4 gst_single_queue_flush
    at gstmultiqueue.c line 760
  • #5 gst_multi_queue_sink_event
    at gstmultiqueue.c line 1507
  • #6 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #7 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #8 gst_pad_push_event
    at gstpad.c line 4567
  • #9 gst_qtdemux_push_event
    at qtdemux.c line 841
  • #10 gst_qtdemux_do_seek
    at qtdemux.c line 1383
  • #11 gst_qtdemux_handle_src_event
    at qtdemux.c line 1490
  • #12 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #13 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #14 gst_pad_push_event
    at gstpad.c line 4567
  • #15 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #16 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #17 gst_pad_push_event
    at gstpad.c line 4567
  • #18 gst_base_parse_handle_seek
    at gstbaseparse.c line 3760
  • #19 gst_base_parse_src_eventfunc
    at gstbaseparse.c line 1222
  • #20 gst_h264_parse_src_event
    at gsth264parse.c line 1957
  • #21 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #22 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #23 gst_pad_push_event
    at gstpad.c line 4567
  • #24 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #25 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #26 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #27 gst_pad_push_event
    at gstpad.c line 4567
  • #28 gst_video_decoder_src_event_default
    at gstvideodecoder.c line 1163
  • #29 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #30 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #31 gst_pad_push_event
    at gstpad.c line 4567
  • #32 event_forward_func
    at gstpad.c line 2666
  • #33 gst_pad_forward
    at gstpad.c line 2620
  • #34 gst_pad_event_default
    at gstpad.c line 2716
  • #35 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #36 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #37 gst_pad_push_event
    at gstpad.c line 4567
  • #38 event_forward_func
    at gstpad.c line 2666
  • #39 gst_pad_forward
    at gstpad.c line 2620
  • #40 gst_pad_event_default
    at gstpad.c line 2716
  • #41 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #42 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #43 gst_pad_push_event
    at gstpad.c line 4567
  • #44 gst_input_selector_event
    at gstinputselector.c line 1495
  • #45 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #46 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #47 gst_pad_push_event
    at gstpad.c line 4567
  • #48 event_forward_func
    at gstpad.c line 2666
  • #49 gst_pad_forward
    at gstpad.c line 2620
  • #50 gst_pad_event_default
    at gstpad.c line 2716
  • #51 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #52 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #53 gst_pad_push_event
    at gstpad.c line 4567
  • #54 gst_stream_synchronizer_src_event
    at gststreamsynchronizer.c line 232
  • #55 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #56 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #57 gst_pad_push_event
    at gstpad.c line 4567
  • #58 event_forward_func
    at gstpad.c line 2666
  • #59 gst_pad_forward
    at gstpad.c line 2620
  • #60 gst_pad_event_default
    at gstpad.c line 2716
  • #61 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #62 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #63 gst_pad_push_event
    at gstpad.c line 4567
  • #64 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #65 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #66 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #67 gst_pad_push_event
    at gstpad.c line 4567
  • #68 event_forward_func
    at gstpad.c line 2666
  • #69 gst_pad_forward
    at gstpad.c line 2620
  • #70 gst_pad_event_default
    at gstpad.c line 2716
  • #71 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #72 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #73 gst_pad_push_event
    at gstpad.c line 4567
  • #74 event_forward_func
    at gstpad.c line 2666
  • #75 gst_pad_forward
    at gstpad.c line 2620
  • #76 gst_pad_event_default
    at gstpad.c line 2716
  • #77 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #78 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #79 gst_pad_push_event
    at gstpad.c line 4567
  • #80 event_forward_func
    at gstpad.c line 2666
  • #81 gst_pad_forward
    at gstpad.c line 2620
  • #82 gst_pad_event_default
    at gstpad.c line 2716
  • #83 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #84 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #85 gst_pad_push_event
    at gstpad.c line 4567
  • #86 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #87 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #88 gst_pad_push_event
    at gstpad.c line 4567
  • #89 event_forward_func
    at gstpad.c line 2666
  • #90 gst_pad_forward
    at gstpad.c line 2620
  • #91 gst_pad_event_default
    at gstpad.c line 2716
  • #92 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #93 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #94 gst_pad_push_event
    at gstpad.c line 4567
  • #95 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #96 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #97 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #98 gst_pad_push_event
    at gstpad.c line 4567
  • #99 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #100 gst_video_scale_src_event
    at gstvideoscale.c line 1422
  • #101 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #102 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #103 gst_pad_push_event
    at gstpad.c line 4567
  • #104 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #105 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #106 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #107 gst_pad_push_event
    at gstpad.c line 4567
  • #108 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1884
  • #109 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #110 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #111 gst_pad_push_event
    at gstpad.c line 4567
  • #112 event_forward_func
    at gstpad.c line 2666
  • #113 gst_pad_forward
    at gstpad.c line 2620
  • #114 gst_pad_event_default
    at gstpad.c line 2716
  • #115 gst_pad_send_event_unchecked
    at gstpad.c line 4745
  • #116 gst_pad_push_event_unchecked
    at gstpad.c line 4440
  • #117 gst_pad_push_event
    at gstpad.c line 4567
  • #118 gst_base_sink_send_event
    at gstbasesink.c line 4129
  • #119 gst_element_send_event
    at gstelement.c line 1540
  • #120 gst_bin_send_event
    at gstbin.c line 2792
  • #121 gst_element_send_event
    at gstelement.c line 1540
  • #122 gst_play_sink_send_event_to_sink
    at gstplaysink.c line 4316
  • #123 gst_play_sink_send_event_to_sink
    at gstplaysink.c line 4300
  • #124 gst_play_sink_send_event
    at gstplaysink.c line 4371
  • #125 gst_element_send_event
    at gstelement.c line 1540
  • #126 gst_bin_send_event
    at gstbin.c line 2792
  • #127 gst_element_send_event
    at gstelement.c line 1540
  • #128 gst_element_seek
    at gstelement.c line 1579
  • #129 bacon_video_widget_seek_time_no_lock
    at bacon-video-widget.c line 3616
  • #130 bacon_video_widget_seek_time_no_lock
    at bacon-video-widget.c line 3606
  • #131 bacon_video_widget_seek_time
    at bacon-video-widget.c line 3679
  • #132 totem_seek_time_rel
    at totem-object.c line 1874
  • #133 totem_action_seek_relative
    at totem-object.c line 1906
  • #134 totem_action_handle_seek
    at totem-object.c line 3397
  • #135 totem_action_handle_key_press
    at totem-object.c line 3550
  • #136 window_key_press_event_cb
    at totem-object.c line 3774
  • #137 window_key_press_event_cb
    at totem-object.c line 3696
  • #138 ??
    from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
  • #139 g_closure_invoke
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gclosure.c line 777
  • #140 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3547
  • #141 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3306
  • #142 g_signal_emit
    at /tmp/buildd/glib2.0-2.32.3/./gobject/gsignal.c line 3352
  • #143 ??
    from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
  • #144 ??
    from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
  • #145 gtk_main_do_event
    from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
  • #146 ??
    from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
  • #147 g_main_dispatch
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 2539
  • #148 g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3075
  • #149 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3146
  • #150 g_main_context_iteration
    at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c line 3207
  • #151 g_application_run
    at /tmp/buildd/glib2.0-2.32.3/./gio/gapplication.c line 1507
  • #152 main
    at totem.c line 264

Comment 1 Sebastian Dröge (slomo) 2012-07-26 06:12:12 UTC
This is for seeking on the very same file or when seeking and also switching between files? In the first case something goes completely wrong with the stream-start events, as the streamsynchronizer for some reason got a stream-start event and now waits for the other streams to finish before accepting the new segment event of the seek.
Comment 2 Sebastian Dröge (slomo) 2012-07-26 06:16:22 UTC
OTOH streamsynchronizer should probably signal the stream_finish cond when receiving a flush-start event to unblock this stream.
Comment 3 Wim Taymans 2012-09-04 09:11:57 UTC
(In reply to comment #2)
> OTOH streamsynchronizer should probably signal the stream_finish cond when
> receiving a flush-start event to unblock this stream.

commit f3158569c60702746dae55d518894f7c25142909
Author: Wim Taymans <wim.taymans@collabora.co.uk>
Date:   Tue Sep 4 11:09:50 2012 +0200

    streamsync: unblock gcond on flush-stop
    
    See https://bugzilla.gnome.org/show_bug.cgi?id=680441
Comment 4 Wim Taymans 2012-09-04 09:17:10 UTC
The flush-start still looks racy, it signals the gcond but it's possible that this happens right before a segment stop arrives and then the segment will block anyway.
Comment 5 Wim Taymans 2012-09-04 09:21:16 UTC
Can't reproduce, please test with lastest git.
Comment 6 Tim-Philipp Müller 2012-09-10 09:11:42 UTC
I think it's fixed now, thanks!