From: Rich Felker Date: Thu, 10 Mar 2011 01:23:44 +0000 (-0500) Subject: make fork properly initialize the main thread in the child process X-Git-Tag: v0.7.0~24 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3f5420bcda134de80ed6b0f0da1d7d23f147a4cc;p=oweals%2Fmusl.git make fork properly initialize the main thread in the child process --- diff --git a/src/process/fork.c b/src/process/fork.c index 0638ed67..87e7dc96 100644 --- a/src/process/fork.c +++ b/src/process/fork.c @@ -1,12 +1,19 @@ #include #include "syscall.h" #include "libc.h" +#include "pthread_impl.h" pid_t fork(void) { pid_t ret; if (libc.fork_handler) libc.fork_handler(-1); ret = syscall0(__NR_fork); + if (libc.lock && !ret) { + pthread_t self = __pthread_self(); + self->pid = syscall0(__NR_getpid); + self->tid = syscall0(__NR_gettid); + libc.threads_minus_1 = 0; + } if (libc.fork_handler) libc.fork_handler(!ret); return ret; }