After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 755102 - qtdemux: segfault when running reverse playback validate scenario for a particular file
qtdemux: segfault when running reverse playback validate scenario for a parti...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
unspecified
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-16 08:30 UTC by Vineeth
Modified: 2018-11-03 15:04 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Vineeth 2015-09-16 08:30:42 UTC
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
    at qtdemux.c line 3983
  • #1 gst_qtdemux_loop
    at qtdemux.c line 5235
  • #2 gst_task_func
    at gsttask.c line 331
  • #3 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #4 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 312
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 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..
Comment 1 Edward Hervey 2018-05-05 10:58:38 UTC
Hi, does this issue still happen with current gstreamer ? I have this feeling this was fixed within the past year or two.
Comment 2 GStreamer system administrator 2018-11-03 15:04:06 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/220.