[Bug 756413] avidemux: Fix assertion error while combining flows

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Oct 12 16:58:34 PDT 2015


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

--- Comment #3 from Vineeth <vineeth.tm at samsung.com> ---
I have a corrupted file, which gives the assertion error while discovering the
file

** (lt-gst-discoverer-1.0:25003): CRITICAL **:
gst_flow_combiner_update_pad_flow: assertion 'pad != NULL' failed

>From my analysis
in the function gst_avi_demux_loop_data()

there is this logic
    /* skip streams without pads */
    if (!stream->pad) {
      GST_DEBUG_OBJECT (avi, "skipping entry from stream %d without pad",
          stream_num);
      goto next;
    }
so when stream->pad is NULL, goto next is being called.

The logic in next is
  next:
    /* move to next item */
    ret = gst_avi_demux_advance (avi, stream, ret);

    /* combine flows */
    ret = gst_avi_demux_combine_flows (avi, stream, ret);


In gst_avi_demux_advance()
      /* EOS */
      GST_DEBUG_OBJECT (avi, "forward reached stop %u", stream->stop_entry);
      goto eos;
gets called, because of which stream won't be advanced. Since the stream won't
be advanced, the stream->pad will still be NULL.

So when gst_avi_demux_combine_flows, gets called
gst_flow_combiner_update_pad_flow throws an assertion error since pad is NULL.

So i was thinking, the combine_flows should be called only when the stream has
advanced. And whenever EOS is being called, stream will not advance and so i
added the check..

please guide if there is any alternate solution. another way i can think of is
calling gst_flow_combiner_update_pad_flow only when pad is available, else just
print a warning message and return.

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