GNOME Bugzilla – Bug 787538
matroskademux: infinite loop when seeking backward
Last modified: 2017-09-19 21:41:39 UTC
sample: https://drive.google.com/file/d/0Bzat_iFKrgCWZm96Z0dvNnFva1U/view?usp=sharing Steps: 1) gst-launch-1.0 filesrc location=trailer.mkv ! matroskademux ! vp8dec ! navseek ! xvimagesink 2) Wait a few seconds 3) Press right arrow to do one seek forward 4) Press left arrow to do one seek backward (It also happens if you skip either step 2 or 3) gst_matroska_demux_search_pos:<matroskademux0> overshot target gst_matroska_demux_flush:<matroskademux0> skipping 12 bytes It loops here: https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/matroska/matroska-demux.c#n1865 Triggered by: https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/matroska/matroska-demux.c#n1963 I have tried on a few mkv samples and it happens only with the one pointed above.
Oops ... silly mistake in (literal) edge case, should now be fixed by: commit cf3f19501220ab859910417520b530c26ea84389 Author: Mark Nauwelaerts <mnauw@users.sourceforge.net> Date: Mon Sep 11 20:24:27 2017 +0200 matroskademux: search_cluster should find preceding cluster before target ... since failing this constraint takes search_pos by surprise which might then end up in an infinite loop. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=787538
Great! Thx Mark.
Should this go into 1.12 (after 1.12.3)?
This fixes something that has not been included in 1.12 branch afaics, so it probably should not (unless going for the whole preceding shebang).