I reproduced the crash in a small compiler-only test case (specific to XLC++) and filed a PMR with IBM. Here are the details: http://issues.apache.org/jira/browse/STDCXX-199. It looks to me like exceptions are essentially unusable in this configuration. Martin Martin Sebor wrote: > Scott Zhong wrote: > >> There are several stdlib test that uses mynew.h and the placement new is >> causing it to seg fault. >> >> >> >> Affected tests: >> >> >> >> tests/stdlib/containers/deque_modifiers >> tests/stdlib/diagnostics/exceptions >> >> tests/stdlib/test/new > > > This test exercises the correctness of the replaced operators > themselves (i.e., those defined by the test suite to exercise > the rest of the library). The other tests most likely all crash > because there's something wrong with the operator. The test runs > with the expected results when compiled with gcc so it seems that > this might be specific to XLC++. > > The stack trace from the core dump (below) shows that it occurs > in the replacement operator new which is just a forwarding > function with hardly any body: > > 166 void* operator new (_RWSTD_SIZE_T n) _THROWS ((_RWSTD_BAD_ALLOC)) > 167 { > 168 return operator_new (n, false); > 169 } > > That seems to suggest some kind of runtime library problem. > Let me try to reproduce it in a smaller test case. > > Here's the backtrace: > > (gdb) where > #0 0x0000000010003e78 in operator new (n=0) at rw_new.h:167 > #1 0x00000000100044fc in test_bad_alloc () > at /amd/devco/sebor/dev/stdlib/tests/test/00_new.cpp:138 > #2 0x00000000100083f8 in run_test () > at /amd/devco/sebor/dev/stdlib/tests/test/00_new.cpp:470 > #3 0x000000001000a080 in rw_vtest (argc=1, argv=0x1ffffffeff8, > file_name=0x100a719c > "/amd/devco/sebor/dev/stdlib/tests/test/00_new.cpp", > clause=0x0, comment=0x0, > fun=@0x100f7050: 0x10008398 , > optstr=0x100a72ec "|-no-new-delete# |-no-bad_alloc# |-no-mismatch# > |-no-bad-delete# |-no-double-delete# |-no-corruption# |-no-leaks# > |-no-stress-test#", > va=0x1ffffffea48 "") > at /amd/devco/sebor/dev/stdlib/tests/src/driver.cpp:1043 > #4 0x000000001000b1fc in rw_test (argc=1, argv=0x1ffffffeff8, > fname=0x100a719c "/amd/devco/sebor/dev/stdlib/tests/test/00_new.cpp", > clause=0x0, comment=0x0, > testfun=@0x100f7050: 0x10008398 , > optstr=0x100a72ec "|-no-new-delete# |-no-bad_alloc# |-no-mismatch# > |-no-bad-delete# |-no-double-delete# |-no-corruption# |-no-leaks# > |-no-stress-test#") > at /amd/devco/sebor/dev/stdlib/tests/src/driver.cpp:1140 > #5 0x0000000010005f7c in main (argc=1, argv=0x1ffffffeff8) > at /amd/devco/sebor/dev/stdlib/tests/test/00_new.cpp:485