Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Vorbis Vorbis
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 24
    • Issues 24
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Xiph.Org
  • VorbisVorbis
  • Issues
  • #340
Closed
Open
Created May 12, 2003 by Andrew S. Williams@andrew.s.williams

[PATCH] segfault in decoding: bad book->dec_codelengths address

i'm using vorbisgain v0.32 (a third party tool)
a seg fault is occurring within libvorbis, so maybe it is a bug in libvorbis
itself..
the seg fault can occur at any point in the analysing stage, and occurs often
(for me at least) with low quality encoded files. 

audio-q1.ogg is a large ogg vorbis file (about 35Mb), quality 1.  

> gdb vorbisgain
(gdb) run audio-q1.ogg
Starting program: /usr/local/bin/vorbisgain audio-q1.ogg
Analyzing files...

   Gain   |  Peak  | Scale | New Peak | Track
----------+--------+-------+----------+------
(no debugging symbols found)...
Program received signal SIGSEGV, Segmentation fault.
0x280a6994 in decode_packed_entry_number (book=0x809e3c8, b=0xbfbff5a8)
    at codebook.c:345

345         if(book->dec_codelengths[lo]<=read){
(gdb) print book->dec_codelengths
$1 = 0x800 <Error reading address 0x800: Bad address>
(gdb) print lo
$2 = 0
(gdb) print hi
$3 = 0
(gdb) bt
#0  0x280a6994 in decode_packed_entry_number (book=0x809e3c8, b=0xbfbff5a8)
    at codebook.c:345
#1  0x280a67d2 in vorbis_book_decodevv_add (book=0x809e3c8, a=0xbfbff1a8, 
    offset=288, ch=2, b=0xbfbff5a8, n=32) at codebook.c:460
#2  0x280a4499 in res2_inverse (vb=0xbfbff5a4, vl=0x8084240, in=0xbfbff1a8, 
    nonzero=0x1, ch=2) at res0.c:859
#3  0x280a58e2 in mapping0_inverse (vb=0xbfbff5a4, l=0x8098000)
    at mapping0.c:701
#4  0x2809b2c9 in vorbis_synthesis (vb=0xbfbff5a4, op=0x2) at synthesis.c:76
#5  0x280b3484 in _fetch_and_process_packet (vf=0xbfbff360, op_in=0x0, readp=1)
    at vorbisfile.c:481
#6  0x280b5a68 in ov_read_float (vf=0xbfbff360, pcm_channels=0xbfbff354, 
    length=1024, bitstream=0xbfbff358) at vorbisfile.c:1612
#7  0x0804a7f4 in free ()
#8  0x08049a37 in free ()
#9  0x0804a16d in free ()
#10 0x080493d5 in free ()
Assignee
Assign to
Time tracking