[Speex-dev] Re: sigsegv in _mm_load_ups (linux/gcc 3.x)

Thorvald Natvig thorvald at natvig.com
Fri Jan 6 03:18:35 PST 2006


>> I've seen the exact same in my version (mingw on win32), and the problem
>> was that the stack was misaligned when entering the function, so the temp
>> registers weren't at 16-byte boundries.
>
> That's a possibility. It's easy to check by printing the address of the
> variables. I know that gcc 3.3 had some alignment issues with _m128 that
> were supposed to be fixed in version 3.4 and above.

I just checked it in the debugger, and this was with gcc 3.4.4 (mingw)... 
And the addresses were not properly aligned :( From a bit of googling, 
this seems to be a thread problem, as the gcc just maintains 16-byte 
alignment of the stack -- if the start function of the thread had 
misaligned stack,  the misalignment will be kept throughout the execution.



More information about the Speex-dev mailing list