GNOME Bugzilla – Bug 737742
vorbisdec: Crashes when handling more than 8 channels
Last modified: 2014-10-14 07:44:36 UTC
Created attachment 287536 [details] The ogg file, that leads to the crash gst-launch-1.0 filesrc location=chan16.ogg ! oggdemux ! vorbisdec ! fakesink leads to: Setting pipeline to PAUSED ... Pipeline is PREROLLING ... WARNING: from element /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0: Could not decode stream. Additional debug info: gstvorbisdec.c(187): vorbis_handle_identification_packet (): /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0: Using NONE channel layout for more than 8 channels Caught SIGSEGV
+ Trace 234157
The file is generated by sox and can be read by Audacity.
Created attachment 287537 [details] Output with --gst-debug-level=5
Issue is due to the fact that reorder_map is only defined for eight channels max. So when channels is greater than 8, we are out of bound, leading to a SIGSEGV. Since we set no particular audio position, I propose to just interleave all channels. I will propose a patch soon.
Created attachment 287547 [details] [review] vorbisdec: don't reorder streams with channels count greater than eight Proposal patch to fix the issue. I made some basic test with audacity.
commit b7ab2f0b08946bacd7aaf16110716573d6c77dd6 Author: Aurélien Zanelli <aurelien.zanelli@darkosphere.fr> Date: Thu Oct 2 00:14:03 2014 +0200 vorbisdec: don't reorder streams with channels count greater than eight vorbis_reorder_map is defined for eight channels max. If we have more than eight channels, it's the application which shall define the order. Since we set audio position to none, we just interleave all the channels without any particular reordering. https://bugzilla.gnome.org/show_bug.cgi?id=737742