https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96817
--- Comment #12 from Jonathan Wakely <redi at gcc dot gnu.org> --- Oh plus this for the aborted init case: @@ -351,7 +366,17 @@ namespace __cxxabiv1 #ifdef _GLIBCXX_USE_FUTEX // If __atomic_* and futex syscall are supported, don't use any global // mutex. +#if __has_include(<sys/single_threaded.h>) + // Prefer to rely on __libc_single_threaded instead of __gthread_active_p + if (__libc_single_threaded) + { + int *gi = (int *) (void *) g; + *gi = 0; + return; + } +#else if (__gthread_active_p ()) +#endif { int *gi = (int *) (void *) g; const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT;