A bit more info - this problem seems to be related to the scope of the threads as if I run the test program with LIBPTHREAD_SYSTEM_SCOPE defined then the debugger catches the abort correctly and lets me trace the offending method call.