http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51906
--- Comment #25 from Jack Howarth <howarth at nitro dot med.uc.edu> 2012-01-31 01:03:33 UTC --- (In reply to comment #24) Here is a trace for libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc compiled at -O0 with... /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/./gcc/g++ -shared-libgcc -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/./gcc -nostdinc++ -L/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/libstdc++-v3/src -L/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/libstdc++-v3/src/.libs -B/sw/lib/gcc4.7/x86_64-apple-darwin11.2.0/bin/ -B/sw/lib/gcc4.7/x86_64-apple-darwin11.2.0/lib/ -isystem /sw/lib/gcc4.7/x86_64-apple-darwin11.2.0/include -isystem /sw/lib/gcc4.7/x86_64-apple-darwin11.2.0/sys-include -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./libstdc++-v3/src/.libs -D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O0 -DLOCALEDIR="." -nostdinc++ -I/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/libstdc++-v3/include/x86_64-apple-darwin11.2.0 -I/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/libstdc++-v3/include -I/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/libsupc++ -I/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/include/backward -I/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/util /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc -std=gnu++0x ./libtestc++.a -L/sw/lib -liconv -lm -m64 -o ./1.exe The resulting binary fails with the same error as when compiled with -O2 but now traces as... (gdb) break main Breakpoint 1 at 0x100000b8e: file /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc, line 32. (gdb) r Starting program: /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/libstdc++-v3/testsuite/1.exe Reading symbols for shared libraries ++++........................ done Breakpoint 1, main () at /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc:32 32 bool test __attribute__((unused)) = true; (gdb) s 37 mutex_type m; (gdb) 38 bool b = m.try_lock(); (gdb) std::recursive_mutex::try_lock (this=0x7fff5fbff770) at mutex:221 221 return !__gthread_recursive_mutex_trylock(&_M_mutex); (gdb) __gthread_recursive_mutex_trylock (__mutex=0x7fff5fbff770) at x86_64-apple-darwin11.2.0/bits/gthr-default.h:813 813 return __gthread_mutex_trylock (__mutex); (gdb) __gthread_mutex_trylock (__mutex=0x7fff5fbff770) at x86_64-apple-darwin11.2.0/bits/gthr-default.h:754 754 if (__gthread_active_p ()) (gdb) __gthread_active_p () at x86_64-apple-darwin11.2.0/bits/gthr-default.h:306 306 return 1; (gdb) 307 } (gdb) __gthread_mutex_trylock (__mutex=0x7fff5fbff770) at x86_64-apple-darwin11.2.0/bits/gthr-default.h:755 755 return __gthrw_(pthread_mutex_trylock) (__mutex); (gdb) 758 } (gdb) __gthread_recursive_mutex_trylock (__mutex=0x7fff5fbff770) at x86_64-apple-darwin11.2.0/bits/gthr-default.h:814 814 } (gdb) std::recursive_mutex::try_lock (this=0x7fff5fbff770) at mutex:222 222 } (gdb) main () at /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc:39 39 VERIFY( b ); (gdb) Assertion failed: (b), function main, file /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120126/libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc, line 39. Program received signal SIGABRT, Aborted. 0x00007fff927c182a in __kill () (gdb) Also, I still can't get your test program to compile with gcc 4.7 or Apple gcc-4,2, FSF gcc 4.7 errors with... pthread_test.c:4:22: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token pthread_test.c: In function ‘main’: pthread_test.c:9:3: error: unknown type name ‘mutex’ pthread_test.c:10:34: error: request for member ‘m’ in something not a structure or union and Apple gcc-4.2 errors with... pthread_test.c:4: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token pthread_test.c: In function ‘main’: pthread_test.c:9: error: ‘mutex’ undeclared (first use in this function) pthread_test.c:9: error: (Each undeclared identifier is reported only once pthread_test.c:9: error: for each function it appears in.) pthread_test.c:9: error: expected ‘;’ before ‘m’ pthread_test.c:10: error: ‘m’ undeclared (first use in this function)