[Bug 755102] New: qtdemux: segfault when running reverse playback validate scenario for a particular file

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Sep 16 01:30:42 PDT 2015


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

            Bug ID: 755102
           Summary: qtdemux: segfault when running reverse playback
                    validate scenario for a particular file
    Classification: Platform
           Product: GStreamer
           Version: unspecified
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: vineeth.tm at samsung.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

I get a segfault when i run reverse playback scenario with a particular mp4
file.

This is the stack trace.
gst_qtdemux_seek_to_previous_keyframe (qtdemux=<optimized out>) at
qtdemux.c:3983
3983      seg_media_start_mov = seg->trak_media_start;
(gdb) bt
#0  gst_qtdemux_seek_to_previous_keyframe (qtdemux=<optimized out>) at
qtdemux.c:3983
#1  gst_qtdemux_loop (pad=0x9b9270) at qtdemux.c:5235
#2  0x00007ffff75ac451 in gst_task_func (task=0x9d75f0) at gsttask.c:331
#3  0x00007ffff702688c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007ffff7025f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007ffff6da2182 in start_thread (arg=0x7fffe6bd2700) at
pthread_create.c:312
#6  0x00007ffff6acf47d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111



The crash is because, segment_index is -1.

For this particular sample, in gst_qtdemux_advance_sample

  /* see if we are past the segment */
  if (G_UNLIKELY (QTSAMPLE_DTS (stream, sample) >= segment->media_stop))
    goto next_segment;

This condition gets satisfied and in next_segment label, segment_index is set
to -1.

I was able to solve the crash .. but not sure if it is really correct..

While checking if we are past the segment, >= is being checked, so even though
qtsample time is same as media_stop, we are skipping to next_segment.
Changing the check to '>' fixes the issue. We are really past the segment only
when is greater than media_stop. Not sure if >= is really needed..

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