[Bug 787290] New: GST_EVENT_FLUSH_START for omxvideodec

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Sep 5 03:27:19 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=787290

            Bug ID: 787290
           Summary: GST_EVENT_FLUSH_START for omxvideodec
    Classification: Platform
           Product: GStreamer
           Version: 1.12.2
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-omx
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: HHG01200 at nifty.ne.jp
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

On Raspberry Pi3, a QuickTime movie (h264, AAC) can be played by omxh264dec
(glimagesink, alsasink).
However, once PAUSED, then after several flushing seek (without PLAYING), 
the pipeline stuck within gst_element_seek().
This is well reproducible.

--------------------------------------
(gdb) info th
  Id   Target Id         Frame 
  21   Thread 0x68eff450 (LWP 1348) "audiosink-ringb" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  20   Thread 0x698ff450 (LWP 1347) "omxh264dec-omxh" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  19   Thread 0x6a21b450 (LWP 1346) "ILCS_HOST" 0x76a7ca40 in do_futex_wait (
    isem=isem at entry=0x6cf16c7c)
    at ../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
  18   Thread 0x6aa1b450 (LWP 1345) "multiqueue0:src" 0x76a7a7a4 in
__pthread_cond_wait (cond=cond at entry=0x6cf16ae8, mutex=mutex at entry=0x6cf16acc)
    at pthread_cond_wait.c:187
  17   Thread 0x6b2ea450 (LWP 1344) "multiqueue0:src" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  16   Thread 0x6bbdd450 (LWP 1343) "multiqueue0:src" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  15   Thread 0x6c3dd450 (LWP 1342) "qtdemux0:sink" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  14   Thread 0x6cdff450 (LWP 1341) "aqueue:src" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  13   Thread 0x6d7ff450 (LWP 1340) "typefind:sink" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
* 12   Thread 0x6dfff450 (LWP 1339) "vqueue:src" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
  11   Thread 0x6e9ff450 (LWP 1338) "gstglcontext" 0x7670fb80 in poll ()
    at ../sysdeps/unix/syscall-template.S:81
  10   Thread 0x6f376450 (LWP 1337) "gldisplay-event" 0x7670fb80 in poll ()
    at ../sysdeps/unix/syscall-template.S:81
  9    Thread 0x6fc77450 (LWP 1336) "Valencia" 0x76a7a7a4 in
__pthread_cond_wait (cond=0x21f780, mutex=0x21f7b4) at pthread_cond_wait.c:187
  8    Thread 0x731e3450 (LWP 1335) "Valencia" 0x76712964 in select ()
    at ../sysdeps/unix/syscall-template.S:81
  7    Thread 0x739e3450 (LWP 1334) "Valencia" 0x76a7a7a4 in
__pthread_cond_wait (cond=0x1ada90, mutex=0x1adac4) at pthread_cond_wait.c:187
  6    Thread 0x743ff450 (LWP 1333) "Valencia" 0x7670fb80 in poll ()
    at ../sysdeps/unix/syscall-template.S:81
  5    Thread 0x74bff450 (LWP 1332) "HCEC Notify" 0x76a7ca40 in do_futex_wait (
    isem=isem at entry=0x769335ec <cecservice_notify_available_event+24>)
    at ../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
  4    Thread 0x753ff450 (LWP 1331) "HTV Notify" 0x76a7ca40 in do_futex_wait (
    isem=isem at entry=0x76932864 <tvservice_notify_available_event+24>)
    at ../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
  3    Thread 0x75bff450 (LWP 1330) "HDispmanx Notif" 0x76a7ca40 in
do_futex_wait (isem=isem at entry=0x769336e8 <dispmanx_notify_available_event+24>)
    at ../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
  2    Thread 0x7656f450 (LWP 1329) "VCHIQ completio" 0x76711f2c in ioctl ()
    at ../sysdeps/unix/syscall-template.S:81
  1    Thread 0x76ff1000 (LWP 1328) "Valencia" 0x76a7d780 in __lll_lock_wait (
    futex=futex at entry=0x22f2b8, private=<optimized out>)
    at ../ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c:46
--------------------------------------


Below is a backtrace of main thread (issuing gst_element_seek())
It is just after GST_EVENT_FLUSH_START is forwarded on video stream at
multiqueue.

--------------------------------------
#0  0x76a7d780 in __lll_lock_wait (futex=futex at entry=0x22f2b8, 
    private=<optimized out>)
    at ../ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c:46
#1  0x76a783c4 in __GI___pthread_mutex_lock (mutex=0x22f2b8)
    at pthread_mutex_lock.c:114
#2  0x76d278fc in gst_pad_pause_task (pad=0x6ce28818) at gstpad.c:6059
#3  0x6fe896a4 in gst_single_queue_flush (mq=mq at entry=0x6ce286a8, 
    sq=sq at entry=0x230100, flush=flush at entry=1, full=full at entry=0)
    at gstmultiqueue.c:1072
#4  0x6fe8bc7c in gst_multi_queue_sink_event (pad=pad at entry=0x1e7bd8, 
    parent=parent at entry=0x6ce286a8, event=event at entry=0x1f9f68)
    at gstmultiqueue.c:2233
#5  0x76d193ac in gst_pad_send_event_unchecked (pad=pad at entry=0x1e7bd8, 
    event=event at entry=0x1f9f68, type=<optimized out>, type at entry=2130696604)
    at gstpad.c:5607
#6  0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x6ce28578, 
    event=event at entry=0x1f9f68, type=2130696604, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5264
#7  0x76d26128 in gst_pad_push_event (pad=pad at entry=0x6ce28578, event=0x1f9f68)
    at gstpad.c:5401
#8  0x6c4142d0 in gst_qtdemux_push_event (qtdemux=qtdemux at entry=0x6ce26088, 
    event=event at entry=0x1f9f68) at qtdemux.c:1028
#9  0x6c439d34 in gst_qtdemux_do_seek (event=<optimized out>, 
    pad=<optimized out>, qtdemux=<optimized out>) at qtdemux.c:1662
#10 gst_qtdemux_handle_src_event (pad=<optimized out>, parent=0x6ce26088, 
    event=0x1f9f20) at qtdemux.c:1794
#11 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x6ce28ea8, 
    event=event at entry=0x1f9f20, type=<optimized out>, 
    type at entry=GST_PAD_PROBE_TYPE_IDLE) at gstpad.c:5608
#12 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x1e7d30, 
    event=event at entry=0x1f9f20, type=GST_PAD_PROBE_TYPE_IDLE, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#13 0x76d26128 in gst_pad_push_event (pad=0x1e7d30, event=0x1f9f20)
    at gstpad.c:5401
#14 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x260030, 
    event=event at entry=0x1f9f20, type=<optimized out>, type at entry=1986571400)
    at gstpad.c:5608
#15 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x260180, 
    event=event at entry=0x1f9f20, type=1986571400, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#16 0x76d26128 in gst_pad_push_event (pad=pad at entry=0x260180, event=0x1f9f20)
    at gstpad.c:5401
#17 0x76e58258 in gst_base_parse_handle_seek (event=0x1f9f20, parse=0x2623a8)
    at gstbaseparse.c:4472
#18 gst_base_parse_src_event_default (parse=0x2623a8, event=0x1f9f20)
    at gstbaseparse.c:1635
#19 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x2602d0, 
    event=event at entry=0x1f9f20, type=<optimized out>, 
    type at entry=GST_PAD_PROBE_TYPE_INVALID) at gstpad.c:5608
#20 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x260420, 
    event=event at entry=0x1f9f20, type=GST_PAD_PROBE_TYPE_INVALID, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#21 0x76d26128 in gst_pad_push_event (pad=0x260420, event=event at entry=0x1f9f20)
    at gstpad.c:5401
#22 0x6ff5fa1c in gst_audio_decoder_src_eventfunc (dec=0x265a50, 
    event=0x1f9f20) at gstaudiodecoder.c:2428
#23 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x260570, 
    event=event at entry=0x1f9f20, type=<optimized out>, 
    type at entry=GST_PAD_PROBE_TYPE_INVALID) at gstpad.c:5608
#24 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x215d18, 
---Type <return> to continue, or q <return> to quit---
    event=event at entry=0x1f9f20, type=GST_PAD_PROBE_TYPE_INVALID, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#25 0x76d26128 in gst_pad_push_event (pad=pad at entry=0x215d18, event=0x1f9f20)
    at gstpad.c:5401
#26 0x76d26640 in event_forward_func (pad=0x215d18, data=0x7effe394)
    at gstpad.c:2992
#27 0x76d21118 in gst_pad_forward (pad=pad at entry=0x6ce16658, 
    forward=0x7effe36c, user_data=0x7effe394, user_data at entry=0x7effe38c)
    at gstpad.c:2946
#28 0x76d212d4 in gst_pad_event_default (pad=0x6ce16658, 
    parent=<optimized out>, event=0x1f9f20) at gstpad.c:3043
#29 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x6ce16658, 
    event=event at entry=0x1f9f20, type=<optimized out>, type at entry=2130700704)
    at gstpad.c:5608
#30 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x208ab0, 
    event=event at entry=0x1f9f20, type=2130700704, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#31 0x76d26128 in gst_pad_push_event (pad=0x208ab0, event=event at entry=0x1f9f20)
    at gstpad.c:5401
#32 0x76e80b34 in gst_base_transform_src_eventfunc (trans=0x20e9a0, 
    event=0x1f9f20) at gstbasetransform.c:1953
#33 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x208c00, 
    event=event at entry=0x1f9f20, type=<optimized out>, 
    type at entry=GST_PAD_PROBE_TYPE_INVALID) at gstpad.c:5608
#34 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x208810, 
    event=event at entry=0x1f9f20, type=GST_PAD_PROBE_TYPE_INVALID, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#35 0x76d26128 in gst_pad_push_event (pad=pad at entry=0x208810, event=0x1f9f20)
    at gstpad.c:5401
#36 0x76d26640 in event_forward_func (pad=0x208810, data=0x7effe744)
    at gstpad.c:2992
#37 0x76d21118 in gst_pad_forward (pad=pad at entry=0x208960, forward=0x53554150, 
    user_data=0x7effe744, user_data at entry=0x7effe73c) at gstpad.c:2946
#38 0x76d212d4 in gst_pad_event_default (pad=0x208960, parent=<optimized out>, 
    event=0x1f9f20) at gstpad.c:3043
#39 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x208960, 
    event=event at entry=0x1f9f20, type=<optimized out>, 
    type at entry=GST_PAD_PROBE_TYPE_INVALID) at gstpad.c:5608
#40 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x1dd9d0, 
    event=event at entry=0x1f9f20, type=GST_PAD_PROBE_TYPE_INVALID, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#41 0x76d26128 in gst_pad_push_event (pad=pad at entry=0x1dd9d0, event=0x1f9f20)
    at gstpad.c:5401
#42 0x76d26640 in event_forward_func (pad=0x1dd9d0, data=0x7effe964)
    at gstpad.c:2992
#43 0x76d21118 in gst_pad_forward (pad=pad at entry=0x1dca40, forward=0x7effea42, 
    user_data=0x7effe964, user_data at entry=0x7effe95c) at gstpad.c:2946
#44 0x76d212d4 in gst_pad_event_default (pad=0x1dca40, parent=<optimized out>, 
    event=0x1f9f20) at gstpad.c:3043
#45 0x76d19660 in gst_pad_send_event_unchecked (pad=pad at entry=0x1dca40, 
    event=event at entry=0x1f9f20, type=<optimized out>, type at entry=33)
    at gstpad.c:5608
#46 0x76d19b1c in gst_pad_push_event_unchecked (pad=pad at entry=0x2086c0, 
    event=event at entry=0x1f9f20, type=33, 
    type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:5264
#47 0x76d26128 in gst_pad_push_event (pad=pad at entry=0x2086c0, 
    event=event at entry=0x1f9f20) at gstpad.c:5401
#48 0x76e67c04 in gst_base_sink_send_event (element=0x20b820, event=0x1f9f20)
    at gstbasesink.c:4514
#49 0x76cfcbc8 in gst_element_send_event (element=element at entry=0x20b820, 
---Type <return> to continue, or q <return> to quit---
    event=event at entry=0x1f9f20) at gstelement.c:1650
#50 0x76cd6374 in gst_bin_send_event (element=0x1b34a8, event=0x1f9f20)
    at gstbin.c:3134
#51 0x76cfcbc8 in gst_element_send_event (element=0x1b34a8, event=0x1f9f20)
    at gstelement.c:1650
#52 0x000c141c in CTrkDataPlayer_gs::Task (this=0x1f2600)
    at /Volumes/work/devx/Valencia/CSources/Gst/CTrkDataPlayer_gs.cpp:550
#53 0x000c000c in CTrkDataPlayer_gs::CmdSchCB (aRef=0x1f2600)
    at /Volumes/work/devx/Valencia/CSources/Gst/CTrkDataPlayer_gs.h:129
#54 0x000b18c0 in CScheduler::Dispatch (this=0x1ad938, aModal=false)
    at /Volumes/work/devx/Emb/eSys/CScheduler.cpp:162
#55 0x000b0778 in CSchedulerTimer::TmoFunc (user_data=0x1ad91c)
    at /Volumes/work/devx/Emb/Linux/CSchedulerTimer_Lnx.cpp:24
#56 0x000b08e8 in Dispatch (source=0x1ada08, 
    callback=0xb0720 <CSchedulerTimer::TmoFunc(void*)>, user_data=0x1ad91c)
    at /Volumes/work/devx/Emb/Linux/CSchedulerTimer_Lnx.cpp:65
#57 0x76b6b1c4 in g_main_context_dispatch ()
   from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
Cannot access memory at address 0x1
#58 0x76b6b588 in ?? () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
Cannot access memory at address 0x1
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
--------------------------------------


Below is a backtrace of 
--------------------------------------
* 16   Thread 0x6bbdd450 (LWP 1343) "multiqueue0:src" syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
--------------------------------------

--------------------------------------
(gdb) bt
#0  syscall () at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
#1  0x76bb543c in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
#2  0x6aa376c0 in gst_omx_component_wait_message (comp=comp at entry=0x6cf05b68, 
    timeout=<optimized out>) at gstomx.c:441
#3  0x6aa3abd0 in gst_omx_port_acquire_buffer (port=port at entry=0x251e10, 
    buf=0xffffffff, buf at entry=0x77e29902) at gstomx.c:1364
#4  0x6aa42524 in gst_omx_video_dec_handle_frame (decoder=0x6cf12140, 
    frame=0x1fd228a) at gstomxvideodec.c:2215
#5  0x76ee6d38 in gst_video_decoder_decode_frame (
    decoder=decoder at entry=0x6cf12140, frame=0x68f2dde8)
    at gstvideodecoder.c:3410
#6  0x76ee9714 in gst_video_decoder_chain_forward (
    decoder=decoder at entry=0x6cf12140, buf=buf at entry=0x2c38f0, 
    at_eos=at_eos at entry=0) at gstvideodecoder.c:2137
#7  0x76ee9e3c in gst_video_decoder_chain (pad=<optimized out>, 
    parent=0x6cf12140, buf=0x2c38f0) at gstvideodecoder.c:2451
#8  0x76d1aef0 in gst_pad_chain_data_unchecked (data=0x2c38f0, type=4112, 
    pad=0x260ab0) at gstpad.c:4205
#9  gst_pad_push_data (pad=pad at entry=0x6ce28d58, type=type at entry=4112, 
    data=<optimized out>, data at entry=0x2c38f0) at gstpad.c:4457
#10 0x76d24cf0 in gst_pad_push (pad=0x6ce28d58, buffer=0x2c38f0)
    at gstpad.c:4576
#11 0x76e7a834 in gst_base_transform_chain (pad=<optimized out>, 
    parent=0x25c1c8, buffer=<optimized out>) at gstbasetransform.c:2312
#12 0x76d1aef0 in gst_pad_chain_data_unchecked (data=0x2c38f0, type=4112, 
    pad=0x6ce28c08) at gstpad.c:4205
#13 gst_pad_push_data (pad=pad at entry=0x6ce28ab8, type=type at entry=4112, 
    data=<optimized out>, data at entry=0x2c38f0) at gstpad.c:4457
#14 0x76d24cf0 in gst_pad_push (pad=0x6ce28ab8, buffer=buffer at entry=0x2c38f0)
    at gstpad.c:4576
#15 0x76e5bfd0 in gst_base_parse_push_frame (parse=parse at entry=0x149a10, 
    frame=frame at entry=0x6cf07608) at gstbaseparse.c:2521
#16 0x76e5eee0 in gst_base_parse_handle_and_push_frame (frame=0x6cf07608, 
    parse=0x149a10) at gstbaseparse.c:2338
#17 gst_base_parse_finish_frame (parse=0x149a10, frame=0x6cf07608, 
    size=<optimized out>) at gstbaseparse.c:2679
#18 0x6b39e044 in gst_h264_parse_handle_frame_packetized (parse=0x149a10, 
    frame=0x6cf07608) at gsth264parse.c:1025
#19 0x6b39e3dc in gst_h264_parse_handle_frame (parse=0x149a10, 
    frame=0x6cf07608, skipsize=0x6bbdcb24) at gsth264parse.c:1078
#20 0x76e5650c in gst_base_parse_handle_buffer (parse=parse at entry=0x149a10, 
    buffer=<optimized out>, skip=0x6bbdcb24, skip at entry=0x6bbdcb1c, 
    flushed=0x6bbdcb28, flushed at entry=0x6bbdcb20) at gstbaseparse.c:2146
#21 0x76e5ce44 in gst_base_parse_chain (pad=<optimized out>, parent=0x149a10, 
    buffer=<optimized out>) at gstbaseparse.c:3228
#22 0x76d1aef0 in gst_pad_chain_data_unchecked (data=0x2498e8, type=4112, 
    pad=0x6ce28968) at gstpad.c:4205
#23 gst_pad_push_data (pad=pad at entry=0x6ce28818, type=type at entry=4112, 
    data=<optimized out>, data at entry=0x2498e8) at gstpad.c:4457
#24 0x76d24cf0 in gst_pad_push (pad=0x6ce28818, buffer=buffer at entry=0x2498e8)
    at gstpad.c:4576
#25 0x6fe8e050 in gst_single_queue_push_one (allow_drop=<synthetic pointer>, 
    object=0x2498e8, sq=0x230100, mq=<optimized out>) at gstmultiqueue.c:1608
#26 gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1920
#27 0x76d59244 in gst_task_func (task=0x6ce2ac18) at gsttask.c:335
#28 0x76b9545c in ?? () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
--------------------------------------


It seems to me that omxvideodec and its ancestors (GstVideoDecoder and
GstElement) 
does not handle GST_EVENT_FLUSH_START.
Can this problem be fixed if omxvideodec handles GST_EVENT_FLUSH_START ?

-- 
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