GNOME Bugzilla – Bug 561924
oggdemux hangs when given corrupt input via non-seekable source
Last modified: 2008-11-25 15:28:36 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:
Created attachment 123218 [details] The 4 bytes "OggS" followed by random data This file can reproduce the non-error described in the bug report.
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_sink_event): If no stream was found before receiving EOS, post an error message. Fixes #561924.