#include /* compiled with g++ 4.1.0 (g++ minimal.cc -o minimal -static -pthread), on Ubuntu Breezy: Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.1.0/configure --prefix=/opt/gcc-4.1/ --enable-shared --enable-__cxa_atexit --enable-libstdcxx-debug Thread model: posix gcc version 4.1.0 Crash: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16386 (LWP 8238)] __gnu_internal::get_global () at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58 58 get_global() throw() Current language: auto; currently c++ (gdb) bt #0 __gnu_internal::get_global () at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58 #1 0x0804c767 in __cxa_get_globals () at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:71 #2 0x0804c33f in __cxa_allocate_exception (thrown_size=8) at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_alloc.cc:154 #3 0x08048298 in doStuff () #4 0x080577af in pthread_start_thread (arg=0xaf5ffbe0) at manager.c:310 #5 0x08057827 in pthread_start_thread_event (arg=0xaf5ffbe0) at manager.c:334 #6 0x08069d9a in clone () */ void *doStuff(void *) try { throw std::runtime_error("boe"); } catch(std::exception& e) {} int main() { pthread_t tid; pthread_create(&tid, 0, doStuff,0); void *result; pthread_join(tid, &result); }