Hello,   Yes, it is inlined:   0x00007ffff7e0e3e9 <+88>:    mov    0x3b98(%rip),%r12        # 0x7ffff7e11f88   0x00007ffff7e0e3f0 <+95>:    test   %r12,%r12   0x00007ffff7e0e3f3 <+98>:    je     0x7ffff7e0e3fd   0x00007ffff7e0e3f5 <+100>:   mov    %rbp,%rdi   0x00007ffff7e0e3f8 <+103>:   callq  0x7ffff7e0d270 Weak reference to pthread_key_create() is stored at 0x7ffff7e11f88. On musl, this memory location contains 0x0. >Воскресенье, 22 ноября 2020, 22:28 +03:00 от Rich Felker : >  >On Sun, Nov 22, 2020 at 08:23:23PM +0100, Florian Weimer wrote: >> * Rich Felker: >> >> > On Sun, Nov 22, 2020 at 09:43:35PM +0300, Арсений wrote: >> >> >> >> Hello, >> >> The problem is that mutex is not got unlocked after the first unlock(). >> >>   >> >> libstdc++ uses a wrapper for pthread called gthreads. This wrapper >> >> checks for the state of the mutex system. For >> >> example, pthread_mutex_unlock() is called in a following way: >> >>   >> >> static inline int >> >> __gthread_mutex_unlock (__gthread_mutex_t *__mutex) >> >> { >> >> if (__gthread_active_p ()) >> >> return __gthrw_(pthread_mutex_unlock) (__mutex); >> >> else >> >> return 0; >> >> } >> > >> > Yes. This code is invalid (it misinterprets weak symbol information to >> > draw incorrect conclusions about whether threads may be in use) and >> > thus is disabled in builds of gcc/libstdc++ targeting musl-based >> > systems. GCC and glibc-based distro folks mostly don't care because >> > it only breaks static linking, but some of them actually hack gcc's >> > libpthread.a into one giant .o file to work around the problem rather >> > than fixing this in gcc... >> >> GCC 11 has a fix (if used along with glibc 2.32), but I wonder if it's >> going to run into a similar issue because inlined code from older GCC >> versions uses a diverging version of the check. >> >> Jonathan, more context is here: >> >> < https://www.openwall.com/lists/musl/2020/11/22/1 > >Uhg, that's a really nasty problem. Is __gthread_active_p() also >inlined? Or can it be given a definition to mitigate the problem? > >Rich     —— Арсений