race condition fix: block all signals before decrementing thread count
[musl] / src / thread / pthread_create.c
index 7c43695..c73c521 100644 (file)
@@ -25,6 +25,8 @@ void __pthread_unwind_next(struct __ptcb *cb)
                }
        }
 
+       syscall4(__NR_sigprocmask, SIG_BLOCK, (long)(uint64_t[1]){-1}, 0, 8);
+
        if (!a_fetch_add(&libc.threads_minus_1, -1))
                exit(0);