From: Rich Felker Date: Sun, 21 Jun 2020 06:15:50 +0000 (-0400) Subject: clear need_locks in child after fork X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=8ed2bd8bfcb4ea6448afb55a941f4b5b2b0398c0;p=musl clear need_locks in child after fork the child is single-threaded, but may still need to synchronize with last changes made to memory by another thread in the parent, so set need_locks to -1 whereby the next lock-taker will drop to 0 and prevent further barriers/locking. --- diff --git a/src/process/fork.c b/src/process/fork.c index fb42478a..7e984ff8 100644 --- a/src/process/fork.c +++ b/src/process/fork.c @@ -30,6 +30,7 @@ pid_t fork(void) self->next = self->prev = self; __thread_list_lock = 0; libc.threads_minus_1 = 0; + if (libc.need_locks) libc.need_locks = -1; } __restore_sigs(&set); __fork_handler(!ret);