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 561924 - oggdemux hangs when given corrupt input via non-seekable source
oggdemux hangs when given corrupt input via non-seekable source
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.21
Other All
: Normal normal
: 0.10.22
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-11-22 16:48 UTC by Philip Jägenstedt
Modified: 2008-11-25 15:28 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24


Attachments
The 4 bytes "OggS" followed by random data (50.00 KB, application/octet-stream)
2008-11-22 16:49 UTC, Philip Jägenstedt
Details

Description Philip Jägenstedt 2008-11-22 16:48:06 UTC
Please describe the problem:
If a corrupt Ogg file (any file beginning with "OggS") is fed to oggdemux via a non-seekable source the pipeline just hangs without any error being posted to the message bus.

Steps to reproduce:
gst-launch-0.10 filesrc location=corrupt.ogg ! queue ! oggdemux ! fakesink

Actual results:
$ GST_DEBUG=default:5,oggdemux:5 gst-launch-0.10 filesrc location=random.ogg ! queue ! oggdemux ! fakesink
0:00:00.099349268 31313  0x850a050 DEBUG             oggdemux gstoggdemux.c:3287:gst_ogg_demux_plugin_init: binding text domain gst-plugins-base-0.10 to locale dir /usr/share/locale
Setting pipeline to PAUSED ...
0:00:00.102241380 31313  0x850a050 DEBUG             oggdemux gstoggdemux.c:3165:gst_ogg_demux_sink_activate:<oggdemux0:sink> activating push
Pipeline is PREROLLING ...
0:00:00.102615107 31313  0x85ab548 DEBUG              default gstsegment.c:452:gst_segment_set_newsegment_full: configuring segment update 0, rate 1.000000, format time, start 0, stop -1, position 0
0:00:00.102748227 31313  0x85ab548 DEBUG              default gstsegment.c:453:gst_segment_set_newsegment_full: old segment was: time segment start=0:00:00.000000000, stop=99:99:99.999999999, last_stop=0:00:00.000000000, duration=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000000
0:00:00.102883093 31313  0x85adbd8 DEBUG              default gstsegment.c:452:gst_segment_set_newsegment_full: configuring segment update 0, rate 1.000000, format time, start 0, stop -1, position 0
0:00:00.102967673 31313  0x85adbd8 DEBUG              default gstsegment.c:453:gst_segment_set_newsegment_full: old segment was: time segment start=0:00:00.000000000, stop=99:99:99.999999999, last_stop=0:00:00.000000000, duration=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000000
0:00:00.103066430 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1480:gst_ogg_demux_sink_event:<oggdemux0> got a new segment event
0:00:00.103180972 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.103249976 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.103376741 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.103444209 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.103550300 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.103616650 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.103751586 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.103818565 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.103925005 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.103991286 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104102545 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104169035 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104329394 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2876:gst_ogg_demux_chain:<oggdemux0> discont in page found, continuing
0:00:00.104463701 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104530680 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104595564 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104612815 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104674137 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104690969 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104751452 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104768284 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104829257 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104845949 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104908039 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.104924802 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 4096 bytes
0:00:00.104986473 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:2864:gst_ogg_demux_chain:<oggdemux0> chain
0:00:00.105003305 31313  0x85adbd8 DEBUG             oggdemux gstoggdemux.c:1510:gst_ogg_demux_submit_buffer:<oggdemux0> submitting 2048 bytes

Expected results:
An error message should be posted similar to what you get with a random access source: gst-launch-0.10 filesrc location=corrupt.ogg ! oggdemux ! fakesink

Does this happen every time?
Yes

Other information:
Comment 1 Philip Jägenstedt 2008-11-22 16:49:41 UTC
Created attachment 123218 [details]
The 4 bytes "OggS" followed by random data

This file can reproduce the non-error described in the bug report.
Comment 2 Wim Taymans 2008-11-25 15:28:36 UTC
        * ext/ogg/gstoggdemux.c: (gst_ogg_demux_sink_event):
        If no stream was found before receiving EOS, post an error message.
        Fixes #561924.