In a 12D build with the default gcc 4.1.0 on SuSE Linux Enterprise Server 10 (x86_64), the following simple program abends with the error below after upgrading the 4.1.3 library to 4.2.0: #include int main () { std::string s = "a"; } The only library symbols referenced from the executable are __rw::__rw_throw(int, ...) __rw::__rw_deallocate(void*, unsigned long, int) std::string::_C_null_ref std::string::string(char const*, std::allocator const&) Of these, the first one isn't being called and the second and fourth haven't changed (according to diff of string.cc). I hate to admit I'm stumped. I suppose I should try to do a build on a different distribution of Linux with an older version of gcc to see if I can reproduce it there. *** glibc detected *** ./t: free(): invalid pointer: 0x0000000000500fe8 *** ======= Backtrace: ========= /lib64/libc.so.6[0x2b71c3a4537e] /lib64/libc.so.6(__libc_free+0x6c)[0x2b71c3a4699c] ./t(__gxx_personality_v0+0x198)[0x400968] /lib64/libc.so.6(__libc_start_main+0xf4)[0x2b71c39f7154] ./t(__gxx_personality_v0+0x59)[0x400829]