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 722442 - Internal data stream error in gstoggdemux.c
Internal data stream error in gstoggdemux.c
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
unspecified
Other All
: Normal normal
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-01-17 19:25 UTC by Allison Karlitskaya (desrt)
Modified: 2015-01-29 18:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
the sample program (1.69 KB, text/x-vala)
2014-01-17 19:25 UTC, Allison Karlitskaya (desrt)
Details
two seconds of silence in a .ogg file (4.11 KB, application/octet-stream)
2014-01-17 19:29 UTC, Allison Karlitskaya (desrt)
Details

Description Allison Karlitskaya (desrt) 2014-01-17 19:25:27 UTC
Created attachment 266573 [details]
the sample program

I was doing some torture testing and I came across this/these internal error(s) in gstoggdemux.c.

Attached is some code that sets up a playbin and uses it to play a file passed on the commandline.  When "about-to-finish" fires, we load in a new URI (actually,the same one again) which kicks off its decoding process.  Really soon after that in the main thread (via idle) we set_state(READY) on the playbin, cancelling the decoding.

About one time out of 4 that results in this output:

[desrt@moonpix muine]$ ./break silence.ogg 
using uri file:///home/desrt/muine/silence.ogg
got state change: NULL to READY pend PLAYING
stream-start
got state change: READY to PAUSED pend PLAYING
got a 200000 async-done message
got a 800 new-clock message
got state change: PAUSED to PLAYING pend VOID_PENDING
change to ready
got state change: PLAYING to PAUSED pend READY
debug: gstoggdemux.c(4065): gst_ogg_demux_find_chains (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin1/GstDecodeBin:decodebin1/GstOggDemux:oggdemux1:
can't get file length

** (break:16189): CRITICAL **: file /home/desrt/muine/break.vala.c: line 138: uncaught error: Could not demultiplex stream. (gst-stream-error-quark, 9)
debug: gstoggdemux.c(4560): gst_ogg_demux_loop (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin1/GstDecodeBin:decodebin1/GstOggDemux:oggdemux1:
stream stopped, reason not-supported

** (break:16189): CRITICAL **: file /home/desrt/muine/break.vala.c: line 138: uncaught error: Internal data stream error. (gst-stream-error-quark, 1)
debug: gstoggdemux.c(4579): gst_ogg_demux_loop (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin1/GstDecodeBin:decodebin1/GstOggDemux:oggdemux1:
EOS before finding a chain

** (break:16189): CRITICAL **: file /home/desrt/muine/break.vala.c: line 138: uncaught error: Could not demultiplex stream. (gst-stream-error-quark, 9)
got state change: PAUSED to READY pend VOID_PENDING
^C

Build the attached program like so:

  valac break.vala --pkg gstreamer-1.0 --pkg gio-2.0

This is Fedora 20.

$ rpm -qa | grep gstreamer
gstreamer1-1.2.2-1.fc20.x86_64
gstreamer-plugins-base-0.10.36-6.fc20.i686
libnice-gstreamer1-0.1.4-2.fc20.x86_64
gstreamer-plugins-ugly-0.10.19-14.fc20.x86_64
gstreamer-plugins-espeak-0.4.0-2.fc19.x86_64
gstreamer-plugins-base-0.10.36-6.fc20.x86_64
gstreamer1-plugins-base-1.2.2-1.fc20.x86_64
gstreamer-0.10.36-6.fc20.x86_64
gstreamer1-plugins-bad-freeworld-1.2.1-2.fc20.x86_64
gstreamer1-plugins-bad-free-1.2.2-1.fc20.x86_64
gstreamer1-devel-1.2.2-1.fc20.x86_64
gstreamer-ffmpeg-0.10.13-10.fc20.x86_64
gstreamer-plugins-good-0.10.31-10.fc20.x86_64
gstreamer-0.10.36-6.fc20.i686
gstreamer-plugins-bad-0.10.23-5.fc20.x86_64
gstreamer1-plugins-good-1.2.2-1.fc20.x86_64
gstreamer1-plugins-ugly-1.2.1-1.fc20.x86_64
gstreamer-devel-0.10.36-6.fc20.x86_64
PackageKit-gstreamer-plugin-0.8.15-2.fc20.x86_64
gstreamer1-libav-1.2.1-1.fc20.x86_64
gstreamer-plugins-bad-free-0.10.23-19.fc20.x86_64
gstreamer-tools-0.10.36-6.fc20.x86_64
Comment 1 Allison Karlitskaya (desrt) 2014-01-17 19:29:45 UTC
Created attachment 266574 [details]
two seconds of silence in a .ogg file

...for your testing convenience
Comment 2 Vincent Penquerc'h 2015-01-29 18:16:07 UTC
commit 9491157f1a10de124f4c17eb06b967357a953c35
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Thu Jan 29 17:58:27 2015 +0000

    oggdemux: do not throw a flow error on flushing
    
    If the streaming task attempts to read a chain while the pipeline
    is stopping (which can happen if the pipeline stops shortly after
    start or a new URI being setup in gapless playback case), it will
    see a flushing return from upstream, and should then also return
    flushing to the caller, rather than emit a flow error.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=722442