[Bug 652562] basesink: stuck in GST_PAD_PREROLL_WAIT

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jun 14 07:18:19 PDT 2011


https://bugzilla.gnome.org/show_bug.cgi?id=652562
  GStreamer | gstreamer (core) | git

--- Comment #3 from Philip Jägenstedt <philipj at opera.com> 2011-06-14 14:18:11 UTC ---
It seems that even when our tests involving this setup pass, we still have a
thread waiting for preroll. I've stepped through a typical such scenario and
this is what happens:

 1. GST_PAD_PREROLL_WAIT - from gst_pad_push (4 byte buffer, should be the full
raw PCM data)

#0  gst_base_sink_wait_preroll (sink=0x7fffd802ff10) at gstbasesink.c:2268
#1  0x00007fffed77e7dc in gst_base_sink_do_preroll (sink=0x7fffd802ff10,
obj=0x7fffe402b400) at gstbasesink.c:2345
#2  0x00007fffed77f00e in gst_base_sink_do_sync (basesink=0x7fffd802ff10,
pad=0x46514c0, obj=0x7fffe402b400, late=0x7fffdef5ae48,
step_end=0x7fffdef5ae44, obj_type=2 '\002') at gstbasesink.c:2531
#3  0x00007fffed781e55 in gst_base_sink_render_object (basesink=0x7fffd802ff10,
pad=0x46514c0, obj_type=2 '\002', obj=0x7fffe402b400) at gstbasesink.c:2976
#4  0x00007fffed7833ac in gst_base_sink_queue_object_unlocked
(basesink=0x7fffd802ff10, pad=0x46514c0, obj_type=2 '\002', obj=0x7fffe402b400,
prerollable=1) at gstbasesink.c:3293
#5  0x00007fffed7845a2 in gst_base_sink_chain_unlocked
(basesink=0x7fffd802ff10, pad=0x46514c0, obj_type=2 '\002', obj=0x7fffe402b400)
at gstbasesink.c:3672
#6  0x00007fffed784733 in gst_base_sink_chain_main (basesink=0x7fffd802ff10,
pad=0x46514c0, obj_type=2 '\002', obj=0x7fffe402b400) at gstbasesink.c:3710
#7  0x00007fffed7848bc in gst_base_sink_chain (pad=0x46514c0,
buf=0x7fffe402b400) at gstbasesink.c:3739
#8  0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x46514c0,
is_buffer=1, data=0x7fffe402b400, cache=0x7fffdef5b1f0) at gstpad.c:4248
#9  0x00007fffee19ff64 in gst_pad_push_data (pad=0x3c3d510, is_buffer=1,
data=0x7fffe402b400, cache=0x7fffdef5b1f0) at gstpad.c:4480
#10 0x00007fffee1a0912 in gst_pad_push (pad=0x3c3d510, buffer=0x7fffe402b400)
at gstpad.c:4705
#11 0x00007fffee1826b8 in gst_proxy_pad_chain_default (pad=0x3be2700,
buffer=0x7fffe402b400) at gstghostpad.c:272
#12 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x3be2700,
is_buffer=1, data=0x7fffe402b400, cache=0x7fffdef5b440) at gstpad.c:4248
#13 0x00007fffee19ff64 in gst_pad_push_data (pad=0x46511c0, is_buffer=1,
data=0x7fffe402b400, cache=0x7fffdef5b440) at gstpad.c:4480
#14 0x00007fffee1a0912 in gst_pad_push (pad=0x46511c0, buffer=0x7fffe402b400)
at gstpad.c:4705
#15 0x00007fffed79a77f in gst_base_transform_chain (pad=0x3bdfc20,
buffer=0x7fffe402b400) at gstbasetransform.c:2474
#16 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x3bdfc20,
is_buffer=1, data=0x7fffe402b400, cache=0x7fffdef5b690) at gstpad.c:4248
#17 0x00007fffee19ff64 in gst_pad_push_data (pad=0x7fffe4040200, is_buffer=1,
data=0x7fffe402b400, cache=0x7fffdef5b690) at gstpad.c:4480
#18 0x00007fffee1a0912 in gst_pad_push (pad=0x7fffe4040200,
buffer=0x7fffe402b400) at gstpad.c:4705
#19 0x00007fffed79a77f in gst_base_transform_chain (pad=0x7fffe4040b00,
buffer=0x7fffe402b400) at gstbasetransform.c:2474
#20 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x7fffe4040b00,
is_buffer=1, data=0x7fffe402b400, cache=0x7fffdef5b8e0) at gstpad.c:4248
#21 0x00007fffee19ff64 in gst_pad_push_data (pad=0x3bdfda0, is_buffer=1,
data=0x7fffe402b400, cache=0x7fffdef5b8e0) at gstpad.c:4480
#22 0x00007fffee1a0912 in gst_pad_push (pad=0x3bdfda0, buffer=0x7fffe402b400)
at gstpad.c:4705
#23 0x00007fffed79a77f in gst_base_transform_chain (pad=0x7fffe4040380,
buffer=0x7fffe402b400) at gstbasetransform.c:2474
#24 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x7fffe4040380,
is_buffer=1, data=0x7fffe402b400, cache=0x7fffdef5bb30) at gstpad.c:4248
#25 0x00007fffee19ff64 in gst_pad_push_data (pad=0x4651040, is_buffer=1,
data=0x7fffe402b400, cache=0x7fffdef5bb30) at gstpad.c:4480
#26 0x00007fffee1a0912 in gst_pad_push (pad=0x4651040, buffer=0x7fffe402b400)
at gstpad.c:4705
#27 0x00007fffec65bfcd in gst_queue_push_one (queue=0x4052410) at
gstqueue.c:1155
#28 0x00007fffec65cb28 in gst_queue_loop (pad=0x4651040) at gstqueue.c:1263
#29 0x00007fffee1d14f3 in gst_task_func (task=0x3f895b0) at gsttask.c:318
#30 0x00007fffee1d2646 in default_func (tdata=0x3da3180, pool=0x3c28000) at
gsttaskpool.c:70
#31 0x00007fffeedbdb16 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007fffeedbb3e4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff6aa9d8c in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#34 0x00007ffff606604d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#35 0x0000000000000000 in ?? ()

 2. GST_PAD_PREROLL_SIGNAL - seek to 0 from our GstMediaPlayer::ThreadFunc

#0  gst_base_sink_preroll_queue_flush (basesink=0x7fffd802ff10, pad=0x46514c0)
at gstbasesink.c:1498
#1  0x00007fffed785fef in gst_base_sink_set_flushing (basesink=0x7fffd802ff10,
pad=0x46514c0, flushing=1) at gstbasesink.c:4202
#2  0x00007fffed7836d7 in gst_base_sink_flush_start (basesink=0x7fffd802ff10,
pad=0x46514c0) at gstbasesink.c:3375
#3  0x00007fffed783c54 in gst_base_sink_event (pad=0x46514c0, event=0x3c1c280)
at gstbasesink.c:3509
#4  0x00007fffee1a28e1 in gst_pad_send_event (pad=0x46514c0, event=0x3c1c280)
at gstpad.c:5399
#5  0x00007fffee1a221a in gst_pad_push_event (pad=0x3c3d510, event=0x3c1c280)
at gstpad.c:5251
#6  0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x3be2700,
event=0x3c1c280) at gstghostpad.c:143
#7  0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3be2700, event=0x3c1c280)
at gstpad.c:5399
#8  0x00007fffee1a221a in gst_pad_push_event (pad=0x46511c0, event=0x3c1c280)
at gstpad.c:5251
#9  0x00007fffed798aab in gst_base_transform_sink_event (pad=0x3bdfc20,
event=0x3c1c280) at gstbasetransform.c:2037
#10 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3bdfc20, event=0x3c1c280)
at gstpad.c:5399
#11 0x00007fffee1a221a in gst_pad_push_event (pad=0x7fffe4040200,
event=0x3c1c280) at gstpad.c:5251
#12 0x00007fffed798aab in gst_base_transform_sink_event (pad=0x7fffe4040b00,
event=0x3c1c280) at gstbasetransform.c:2037
#13 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x7fffe4040b00,
event=0x3c1c280) at gstpad.c:5399
#14 0x00007fffee1a221a in gst_pad_push_event (pad=0x3bdfda0, event=0x3c1c280)
at gstpad.c:5251
#15 0x00007fffed798aab in gst_base_transform_sink_event (pad=0x7fffe4040380,
event=0x3c1c280) at gstbasetransform.c:2037
#16 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x7fffe4040380,
event=0x3c1c280) at gstpad.c:5399
#17 0x00007fffee1a221a in gst_pad_push_event (pad=0x4651040, event=0x3c1c280)
at gstpad.c:5251
#18 0x00007fffec65a272 in gst_queue_handle_sink_event (pad=0x3bdf7a0,
event=0x3c1c280) at gstqueue.c:825
#19 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3bdf7a0, event=0x3c1c280)
at gstpad.c:5399
#20 0x00007fffee1a221a in gst_pad_push_event (pad=0x3c3d360, event=0x3c1c280)
at gstpad.c:5251
#21 0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x3be28c0,
event=0x3c1c280) at gstghostpad.c:143
#22 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3be28c0, event=0x3c1c280)
at gstpad.c:5399
#23 0x00007fffee1a221a in gst_pad_push_event (pad=0x46bf810, event=0x3c1c280)
at gstpad.c:5251
#24 0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x3c3d6c0,
event=0x3c1c280) at gstghostpad.c:143
#25 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3c3d6c0, event=0x3c1c280)
at gstpad.c:5399
#26 0x00007fffee1a221a in gst_pad_push_event (pad=0x3bdf620, event=0x3c1c280)
at gstpad.c:5251
#27 0x00007fffea5e05fc in gst_wavparse_perform_seek (wav=0x4830090,
event=0x7fffe403e6d0) at gstwavparse.c:879
#28 0x00007fffea5e7f9c in gst_wavparse_srcpad_event (pad=0x3bdf620,
event=0x7fffe403e6d0) at gstwavparse.c:2564
#29 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3bdf620,
event=0x7fffe403e6d0) at gstpad.c:5399
#30 0x00007fffee1a221a in gst_pad_push_event (pad=0x3c3d6c0,
event=0x7fffe403e6d0) at gstpad.c:5251
#31 0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x46bf810,
event=0x7fffe403e6d0) at gstghostpad.c:143
#32 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x46bf810,
event=0x7fffe403e6d0) at gstpad.c:5399
#33 0x00007fffee1a221a in gst_pad_push_event (pad=0x3be28c0,
event=0x7fffe403e6d0) at gstpad.c:5251
#34 0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x3c3d360,
event=0x7fffe403e6d0) at gstghostpad.c:143
#35 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3c3d360,
event=0x7fffe403e6d0) at gstpad.c:5399
#36 0x00007fffee1a221a in gst_pad_push_event (pad=0x3bdf7a0,
event=0x7fffe403e6d0) at gstpad.c:5251
#37 0x00007fffec65d06a in gst_queue_handle_src_event (pad=0x4651040,
event=0x7fffe403e6d0) at gstqueue.c:1312
#38 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x4651040,
event=0x7fffe403e6d0) at gstpad.c:5399
#39 0x00007fffee1a221a in gst_pad_push_event (pad=0x7fffe4040380,
event=0x7fffe403e6d0) at gstpad.c:5251
#40 0x00007fffed799600 in gst_base_transform_src_eventfunc (trans=0x3b4e7b0,
event=0x7fffe403e6d0) at gstbasetransform.c:2160
#41 0x00007fffed7994f7 in gst_base_transform_src_event (pad=0x3bdfda0,
event=0x7fffe403e6d0) at gstbasetransform.c:2125
#42 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3bdfda0,
event=0x7fffe403e6d0) at gstpad.c:5399
#43 0x00007fffee1a221a in gst_pad_push_event (pad=0x7fffe4040b00,
event=0x7fffe403e6d0) at gstpad.c:5251
#44 0x00007fffed799600 in gst_base_transform_src_eventfunc (trans=0x3db63a0,
event=0x7fffe403e6d0) at gstbasetransform.c:2160
#45 0x00007fffed7994f7 in gst_base_transform_src_event (pad=0x7fffe4040200,
event=0x7fffe403e6d0) at gstbasetransform.c:2125
#46 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x7fffe4040200,
event=0x7fffe403e6d0) at gstpad.c:5399
#47 0x00007fffee1a221a in gst_pad_push_event (pad=0x3bdfc20,
event=0x7fffe403e6d0) at gstpad.c:5251
#48 0x00007fffed799600 in gst_base_transform_src_eventfunc (trans=0x4daa8c0,
event=0x7fffe403e6d0) at gstbasetransform.c:2160
#49 0x00007fffed7994f7 in gst_base_transform_src_event (pad=0x46511c0,
event=0x7fffe403e6d0) at gstbasetransform.c:2125
#50 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x46511c0,
event=0x7fffe403e6d0) at gstpad.c:5399
#51 0x00007fffee1a221a in gst_pad_push_event (pad=0x3be2700,
event=0x7fffe403e6d0) at gstpad.c:5251
#52 0x00007fffee1821a4 in gst_proxy_pad_event_default (pad=0x3c3d510,
event=0x7fffe403e6d0) at gstghostpad.c:143
#53 0x00007fffee1a28e1 in gst_pad_send_event (pad=0x3c3d510,
event=0x7fffe403e6d0) at gstpad.c:5399
#54 0x00007fffee1a221a in gst_pad_push_event (pad=0x46514c0,
event=0x7fffe403e6d0) at gstpad.c:5251
#55 0x00007fffed786fc5 in gst_base_sink_send_event (element=0x7fffd802ff10,
event=0x7fffe403e6d0) at gstbasesink.c:4521
#56 0x00007fffee177cae in gst_element_send_event (element=0x7fffd802ff10,
event=0x7fffe403e6d0) at gstelement.c:1634
#57 0x00007fffee15f88a in gst_bin_send_event (element=0x4da9c80,
event=0x7fffe403e6d0) at gstbin.c:2702
#58 0x00007fffee177cae in gst_element_send_event (element=0x4da9c80,
event=0x7fffe403e6d0) at gstelement.c:1634
#59 0x00007fffee15f88a in gst_bin_send_event (element=0x3be8170,
event=0x7fffe403e6d0) at gstbin.c:2702
#60 0x00007fffee177cae in gst_element_send_event (element=0x3be8170,
event=0x7fffe403e6d0) at gstelement.c:1634
#61 0x00007fffee15f88a in gst_bin_send_event (element=0x4e5c060,
event=0x7fffe403e6d0) at gstbin.c:2702
#62 0x00007fffee177cae in gst_element_send_event (element=0x4e5c060,
event=0x7fffe403e6d0) at gstelement.c:1634
#63 0x00007fffee177dc6 in gst_element_seek (element=0x4e5c060, rate=1,
format=GST_FORMAT_TIME, flags=3, cur_type=GST_SEEK_TYPE_SET, cur=0,
stop_type=GST_SEEK_TYPE_NONE, stop=0) at gstelement.c:1674
#64 0x00007fffee1dc0c4 in gst_element_seek_simple (element=0x4e5c060,
format=GST_FORMAT_TIME, seek_flags=3, seek_pos=0) at gstutils.c:2420
#65 0x000000000266c325 in GstMediaPlayer::ThreadFunc (data=0x7fffe4be4200) at
../platforms/media_backends/gst/gstmediaplayer.cpp:422
#66 0x00007fffeedbb3e4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#67 0x00007ffff6aa9d8c in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#68 0x00007ffff606604d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#69 0x0000000000000000 in ?? ()

 3. GST_PAD_PREROLL_WAIT - from gst_pad_push (4 byte buffer, the same 4 bytes
after seeking)

#0  gst_base_sink_wait_preroll (sink=0x7fffd802ff10) at gstbasesink.c:2268
#1  0x00007fffed77e7dc in gst_base_sink_do_preroll (sink=0x7fffd802ff10,
obj=0x3caf1b0) at gstbasesink.c:2345
#2  0x00007fffed77f00e in gst_base_sink_do_sync (basesink=0x7fffd802ff10,
pad=0x46514c0, obj=0x3caf1b0, late=0x7fffdef5ae48, step_end=0x7fffdef5ae44,
obj_type=2 '\002') at gstbasesink.c:2531
#3  0x00007fffed781e55 in gst_base_sink_render_object (basesink=0x7fffd802ff10,
pad=0x46514c0, obj_type=2 '\002', obj=0x3caf1b0) at gstbasesink.c:2976
#4  0x00007fffed7833ac in gst_base_sink_queue_object_unlocked
(basesink=0x7fffd802ff10, pad=0x46514c0, obj_type=2 '\002', obj=0x3caf1b0,
prerollable=1) at gstbasesink.c:3293
#5  0x00007fffed7845a2 in gst_base_sink_chain_unlocked
(basesink=0x7fffd802ff10, pad=0x46514c0, obj_type=2 '\002', obj=0x3caf1b0) at
gstbasesink.c:3672
#6  0x00007fffed784733 in gst_base_sink_chain_main (basesink=0x7fffd802ff10,
pad=0x46514c0, obj_type=2 '\002', obj=0x3caf1b0) at gstbasesink.c:3710
#7  0x00007fffed7848bc in gst_base_sink_chain (pad=0x46514c0, buf=0x3caf1b0) at
gstbasesink.c:3739
#8  0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x46514c0,
is_buffer=1, data=0x3caf1b0, cache=0x7fffdef5b1f0) at gstpad.c:4248
#9  0x00007fffee19ff64 in gst_pad_push_data (pad=0x3c3d510, is_buffer=1,
data=0x3caf1b0, cache=0x7fffdef5b1f0) at gstpad.c:4480
#10 0x00007fffee1a0912 in gst_pad_push (pad=0x3c3d510, buffer=0x3caf1b0) at
gstpad.c:4705
#11 0x00007fffee1826b8 in gst_proxy_pad_chain_default (pad=0x3be2700,
buffer=0x3caf1b0) at gstghostpad.c:272
#12 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x3be2700,
is_buffer=1, data=0x3caf1b0, cache=0x7fffdef5b440) at gstpad.c:4248
#13 0x00007fffee19ff64 in gst_pad_push_data (pad=0x46511c0, is_buffer=1,
data=0x3caf1b0, cache=0x7fffdef5b440) at gstpad.c:4480
#14 0x00007fffee1a0912 in gst_pad_push (pad=0x46511c0, buffer=0x3caf1b0) at
gstpad.c:4705
#15 0x00007fffed79a77f in gst_base_transform_chain (pad=0x3bdfc20,
buffer=0x3caf1b0) at gstbasetransform.c:2474
#16 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x3bdfc20,
is_buffer=1, data=0x3caf1b0, cache=0x7fffdef5b690) at gstpad.c:4248
#17 0x00007fffee19ff64 in gst_pad_push_data (pad=0x7fffe4040200, is_buffer=1,
data=0x3caf1b0, cache=0x7fffdef5b690) at gstpad.c:4480
#18 0x00007fffee1a0912 in gst_pad_push (pad=0x7fffe4040200, buffer=0x3caf1b0)
at gstpad.c:4705
#19 0x00007fffed79a77f in gst_base_transform_chain (pad=0x7fffe4040b00,
buffer=0x3caf1b0) at gstbasetransform.c:2474
#20 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x7fffe4040b00,
is_buffer=1, data=0x3caf1b0, cache=0x7fffdef5b8e0) at gstpad.c:4248
#21 0x00007fffee19ff64 in gst_pad_push_data (pad=0x3bdfda0, is_buffer=1,
data=0x3caf1b0, cache=0x7fffdef5b8e0) at gstpad.c:4480
#22 0x00007fffee1a0912 in gst_pad_push (pad=0x3bdfda0, buffer=0x3caf1b0) at
gstpad.c:4705
#23 0x00007fffed79a77f in gst_base_transform_chain (pad=0x7fffe4040380,
buffer=0x3caf1b0) at gstbasetransform.c:2474
#24 0x00007fffee19f2da in gst_pad_chain_data_unchecked (pad=0x7fffe4040380,
is_buffer=1, data=0x3caf1b0, cache=0x7fffdef5bb30) at gstpad.c:4248
#25 0x00007fffee19ff64 in gst_pad_push_data (pad=0x4651040, is_buffer=1,
data=0x3caf1b0, cache=0x7fffdef5bb30) at gstpad.c:4480
#26 0x00007fffee1a0912 in gst_pad_push (pad=0x4651040, buffer=0x3caf1b0) at
gstpad.c:4705
#27 0x00007fffec65bfcd in gst_queue_push_one (queue=0x4052410) at
gstqueue.c:1155
#28 0x00007fffec65cb28 in gst_queue_loop (pad=0x4651040) at gstqueue.c:1263
#29 0x00007fffee1d14f3 in gst_task_func (task=0x3f895b0) at gsttask.c:318
#30 0x00007fffee1d2646 in default_func (tdata=0x3da3180, pool=0x3c28000) at
gsttaskpool.c:70
#31 0x00007fffeedbdb16 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007fffeedbb3e4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff6aa9d8c in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#34 0x00007ffff606604d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#35 0x0000000000000000 in ?? ()

 4. Nothing! The thread in step 3 is still waiting.

Will investigate why we're not getting a second preroll, or if basesink should
be waiting for it at all.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list