This is a problem that I've seen in the archives and is marked as not being a problem with gcc. I'm not sure what the solution is though, the simple test below runs fine using the Microsoft compiler (on windows) and fails using gcc (3.4.5) compiler. There is no pthreads or glib code here. The output shows that the second call to f(), in the thread, has a misaligned s variable (which will crash in a SSE call). Jon #include <stdio.h> #include <process.h> #include <windows.h> #include <xmmintrin.h> void f(void *p) { __m128 s; printf("%d\n", ((int)&s) % 16); } int main(int argc, char ** argv) { f(0); _beginthread(f, 0, 0); Sleep(2000); return 0; }