qtdemux: SEEK_TYPE_NONE seeks cause assertions
@slomo
Submitted by Sebastian Dröge Link to original bug (#781724)
Description
GStreamer-CRITICAL **: gst_segment_to_running_time_full: assertion 'stop >= offset' failed
print *segment
$1 = {
flags = GST_SEGMENT_FLAG_RESET,
rate = -1,
applied_rate = 1,
format = GST_FORMAT_TIME,
base = 0,
offset = 70166666666,
start = 44250259825,
stop = 49900000000,
time = 44183593159,
position = 49900000000,
duration = 18446744073709551615,
_gst_reserved = {0x0, 0x0, 0x0, 0x0}
}
Can be reproduced by doing normal seeks together with SEEK_TYPE_NONE seeks to reverse playback direction.
#0 0x00007ffff758c261 in _g_log_abort (breakpoint=breakpoint@entry=1) at ././glib/gmessages.c:509
#1 0x00007ffff758d66d in g_logv (log_domain=0x7ffff7b73f30 <g_log_domain_gstreamer> "GStreamer", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffff22c6780) at ././glib/gmessages.c:1318
#2 0x00007ffff758d7cf in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>)
at ././glib/gmessages.c:1359
#3 0x00007ffff7b3a862 in gst_segment_to_running_time_full (segment=0x7fffe4005e10, format=GST_FORMAT_TIME, position=49900000000, running_time=0x7ffff22c68d0) at gstsegment.c:757
#4 0x00007ffff421b326 in my_segment_to_running_time (val=<optimized out>, segment=0x7fffe4005e10)
at gstmultiqueue.c:422
#5 0x00007ffff421b326 in update_time_level (mq=mq@entry=0x7fffe4006070 [GstMultiQueue], sq=sq@entry=0x7fffe4005de0) at gstmultiqueue.c:1342
#6 0x00007ffff421b985 in apply_segment (mq=0x7fffe4006070 [GstMultiQueue], sq=0x7fffe4005de0, event=<optimized out>, segment=0x7fffe4005e10) at gstmultiqueue.c:1451
#7 0x00007ffff421be26 in gst_multi_queue_sink_event (pad=pad@entry=0x555555987470 [GstMultiQueuePad], parent=parent@entry=0x7fffe4006070 [GstMultiQueue], event=event@entry=0x7fffe418a430) at gstmultiqueue.c:2320
#8 0x00007ffff7b15147 in gst_pad_send_event_unchecked (pad=pad@entry=0x555555987470 [GstMultiQueuePad], event=event@entry=0x7fffe418a430, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5607
#9 0x00007ffff7b15a2d in gst_pad_push_event_unchecked (pad=pad@entry=0x555555987230 [GstPad], event=0x7fffe418a430, type=type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5264
#10 0x00007ffff7b15d99 in push_sticky (pad=pad@entry=0x555555987230 [GstPad], ev=ev@entry=0x7ffff22c6b70, user_data=user_data@entry=0x7ffff22c6bd0) at gstpad.c:3807
#11 0x00007ffff7b13b57 in events_foreach (pad=pad@entry=0x555555987230 [GstPad], func=func@entry=0x7ffff7b15ce0 <push_sticky>, user_data=user_data@entry=0x7ffff22c6bd0) at gstpad.c:604
#12 0x00007ffff7b1f71f in check_sticky (event=0x7fffe418a430, pad=0x555555987230 [GstPad]) at gstpad.c:3864
#13 0x00007ffff7b1f71f in gst_pad_push_event (pad=0x555555987230 [GstPad], event=0x7fffe418a430)
at gstpad.c:5395
#14 0x00007ffff2705bae in gst_qtdemux_stream_update_segment (qtdemux=qtdemux@entry=0x7fffec188af0 [GstQTDemux], stream=stream@entry=0x7fffe400e400, seg_idx=seg_idx@entry=0, offset=offset@entry=49833333334, _start=_start@entry=0x7ffff22c6cb0, _stop=_stop@entry=0x7ffff22c6cb8) at qtdemux.c:4765
#15 0x00007ffff271685b in gst_qtdemux_activate_segment (qtdemux=qtdemux@entry=0x7fffec188af0 [GstQTDemux], stream=stream@entry=0x7fffe400e400, seg_idx=0, offset=offset@entry=49833333334) at qtdemux.c:4798
#16 0x00007ffff272ae35 in gst_qtdemux_prepare_current_sample (keyframe=<synthetic pointer>, duration=<synthetic pointer>, pts=<synthetic pointer>, dts=<synthetic pointer>, size=<synthetic pointer>, offset=<synthetic pointer>, empty=<synthetic pointer>, stream=0x7fffe400e400, qtdemux=0x7fffec188af0 [GstQTDemux]) at qtdemux.c:4922
---Type <return> to continue, or q <return> to quit---
#17 0x00007ffff272ae35 in gst_qtdemux_loop_state_movie (qtdemux=0x7fffec188af0 [GstQTDemux]) at qtdemux.c:5746
#18 0x00007ffff272ae35 in gst_qtdemux_loop (pad=0x555555986930 [GstPad]) at qtdemux.c:5925
#19 0x00007ffff7b496d9 in gst_task_func (task=0x55555598a710 [GstTask]) at gsttask.c:335
#20 0x00007ffff75aedce in g_thread_pool_thread_proxy (data=<optimized out>) at ././glib/gthreadpool.c:307
#21 0x00007ffff75ae3d5 in g_thread_proxy (data=0x7fffec187280) at ././glib/gthread.c:784
#22 0x00007ffff5ff9494 in start_thread (arg=0x7ffff22c7700) at pthread_create.c:333
#23 0x00007ffff728693f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97