Jean-Marc Valin wrote:> That's quite strange. The only thing I can say is that the bug is most > likely *not* around line 414. It's probably some sort of memory > corruption somewhere else (quite possibly outside of Speex). Do you have > any more information? What CPU? What's the value of best_ntarget[j]? Is > SSE enabled? What's the allocation method (VAR_ARRAYS/USE_ALLOCA)? What > compiler. >gcc: Reading specs from c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs Configured with: ../gcc-3.4.5/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug Thread model: win32 gcc version 3.4.5 (mingw special) Compile flags: DEFINES += NDEBUG WIN32 _WINDOWS HAVE_CONFIG_H VAR_ARRAYS VORBIS_PSYCHO CFLAGS: -O3 -march=pentium3 -mtune=pentium4 -mmmx -msse -fomit-frame-pointer -ffast-math -g -Wall SSE technically enabled in the compiler, but not used by libspeex. As for the CPU and the values of best_ntarget[j], I have no way to find out. I almost had to bully the enduser in question just to get the offset from the windows crash dialog :( .. But apparantly it crashed at that exact spot several times.
> gcc version 3.4.5 (mingw special)Can you try 4.0 or 4.1 just to be sure?> Compile flags: > DEFINES += NDEBUG WIN32 _WINDOWS HAVE_CONFIG_H VAR_ARRAYS VORBIS_PSYCHOVORBIS_PSYCHO is an *experimental* feature and should not be enabled unless you want to do research with it.> CFLAGS: > -O3 -march=pentium3 -mtune=pentium4 -mmmx -msse -fomit-frame-pointer > -ffast-math -g -WallLooks fine, though I usually don't test with -mmmx -msse -fomit-frame-pointer> SSE technically enabled in the compiler, but not used by libspeex. > > As for the CPU and the values of best_ntarget[j], I have no way to find > out. I almost had to bully the enduser in question just to get the > offset from the windows crash dialog :( .. But apparantly it crashed at > that exact spot several times.Hmm... Can you tell me what bit-rate/sampling rate you're using? Is VBR on? Other options? Jean-Marc
Jean-Marc Valin wrote:>> gcc version 3.4.5 (mingw special) > > Can you try 4.0 or 4.1 just to be sure?mingw (native gcc for win32) doesn't officially support using gcc 4.0 and 4.1 yet (apparantly there have been some issues), so there are no binary packages. But if you think it helps, I can compile gcc 4.1 and give it a shot.>> Compile flags: >> DEFINES += NDEBUG WIN32 _WINDOWS HAVE_CONFIG_H VAR_ARRAYS VORBIS_PSYCHO > > VORBIS_PSYCHO is an *experimental* feature and should not be enabled > unless you want to do research with it.A while back you asked for testers of this and I volunteered :) So far, my testers seem positive, but I have no idea if that is because I told them to expect better quality or if the quality actually is better. But if you think it's related, I can disable it again.>> As for the CPU and the values of best_ntarget[j], I have no way to find >> out. I almost had to bully the enduser in question just to get the >> offset from the windows crash dialog :( .. But apparantly it crashed at >> that exact spot several times. > > Hmm... Can you tell me what bit-rate/sampling rate you're using? Is VBR > on? Other options?16khz (wideband) VBR (VAD and DTX off), passed through preprocessor (VAD, DENOISE, AGC and DEREVERB. AGC level set to 20000). VBR_QUALITY and COMPLEXITY are userconfigurable, I'll ask and see what he's set them to. I must admit I'm a bit stumped as to why it's just this one user that has this problem :( I've been completely unable to replicate the problem here. I've added stackframe output on crashes to the latest testbuild, I'll have the user use that. At least then I can say what j and best_ntarget[j] is.