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 737742 - vorbisdec: Crashes when handling more than 8 channels
vorbisdec: Crashes when handling more than 8 channels
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 1.4.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-10-01 19:33 UTC by Peter G. Baum
Modified: 2014-10-14 07:44 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
The ogg file, that leads to the crash (3.34 KB, video/ogg)
2014-10-01 19:33 UTC, Peter G. Baum
  Details
Output with --gst-debug-level=5 (147.29 KB, application/gzip)
2014-10-01 19:38 UTC, Peter G. Baum
  Details
vorbisdec: don't reorder streams with channels count greater than eight (1.77 KB, patch)
2014-10-01 22:24 UTC, Aurélien Zanelli
committed Details | Review

Description Peter G. Baum 2014-10-01 19:33:04 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
  • #0 poll
    from /lib64/libc.so.6
  • #1 g_main_context_iterate.isra
  • #2 g_main_loop_run
    from /lib64/libglib-2.0.so.0
  • #3 gst_bus_poll
  • #4 event_loop
  • #5 main


The file is generated by sox and can be read by Audacity.
Comment 1 Peter G. Baum 2014-10-01 19:38:42 UTC
Created attachment 287537 [details]
Output with --gst-debug-level=5
Comment 2 Aurélien Zanelli 2014-10-01 22:20:42 UTC
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.
Comment 3 Aurélien Zanelli 2014-10-01 22:24:49 UTC
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.
Comment 4 Sebastian Dröge (slomo) 2014-10-02 07:43:04 UTC
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