[Speex-dev] Crash in cb_search.c, line 414

Thorvald Natvig speex at natvig.com
Wed Oct 4 05:44:45 PDT 2006

Ok, I got a strange case..

I got a bugreport from a user about my application crashing on him. 
After a bit of trouble, I got him to report back the module and offset 
it crashed at (win32). I always retain a copy of my symbol files for my 
release builds, so tracking down the crash address leads to:

(gdb) list *0x6d5c2213
0x6d5c2213 is in split_cb_search_shape_sign (cb_search.c:414).
409                 break;
410           }
411           for (j=0;j<N;j++)
412           {
413              /*previous target (we don't care what happened before*/
414              for (m=(i+1)*subvect_size;m<nsf;m++)
415                 nt[j][m]=ot[best_ntarget[j]][m];
417              /* New code: update the rest of the target only if it's 
worth it */
418              for (m=0;m<subvect_size;m++)

And the crash is at line 414. Digging through the disassembly, the crash 
seems to be the ot[best_ntarget[j]] lookup, ie: best_ntarget[j] returns 
an index that is out of bounds for ot[]. How that value gets to be 
there, I have no idea, and unfortunately I'm having trouble convincing 
the user that downloading and installing a full debugger is a good idea.

(This is against latest SVN btw)

Any ideas on what might be wrong?

More information about the Speex-dev mailing list