to find the locations in my SSE/AVX code where something goes wrong, I enable various exceptions in the mxcsr register using the ldmxcsr command.
When my code then triggers the exception, my program segfaults as expected.
Unfortunately it is then not possible to find the location of the crash with GDB, because libamdocl32.so installs its own exception handler and seems to corrupt the stack, so that GDB can't show me which part of my code triggered the exception:
|#0 0xf778b430 in __kernel_vsyscall ()|
|#1 0x007c6b11 in raise () from /lib/libc.so.6|
|#2 0x007c83ea in abort () from /lib/libc.so.6|
|#3 0xc916697e in amd::divisionErrorHandler(int, siginfo*, void*) () from /usr/lib/libamdocl32.so|
|#4 0xcb1e45e0 in ?? () from /usr/lib/libamdocl32.so|
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
My current workaround is to hunt down the exceptions on a system with nVIDIA card, because the nVIDIA driver doesn't cause this problem.
Any other idea?
Thanks for your help,