http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51906
--- Comment #12 from Jack Howarth <howarth at nitro dot med.uc.edu> 2012-01-28 16:52:24 UTC --- The contents of 3.ii.diff seems to suggest that the problem is the fact that Lion always defines _GTHREAD_RECURSIVE_MUTEX_INIT and this support is either buggy on Lion or is exposing a libstdc++ mutex bug. This usage can be seen in libstdc++-v3/include/mutex as.... #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT __native_type _M_mutex = __GTHREAD_RECURSIVE_MUTEX_INIT; __recursive_mutex_base() = default; #else __native_type _M_mutex; __recursive_mutex_base() { // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may) __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); } ~__recursive_mutex_base() { _S_destroy(&_M_mutex); } Note that if you compile 3.ii.lion_10.6 on SL, the same execution failure is seen there.