[PATCH v2 2/8] linux: Use __libc_single_threaded on fork
Adhemerval Zanella
adhemerval.zanella@linaro.org
Thu Mar 11 19:52:04 GMT 2021
Changes from v1:
* Fix __libc_single_threaded backwards usage.
---
Checked on x86_64-linux-gnu.
---
sysdeps/nptl/fork.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 4fb4c2d254..f78267b68c 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -34,6 +34,7 @@
#include <malloc/malloc-internal.h>
#include <nss/nss_database.h>
#include <unwind-link.h>
+#include <sys/single_threaded.h>
static void
fresetlockfiles (void)
@@ -55,7 +56,7 @@ __libc_fork (void)
handlers in the single-thread case, to make fork safer to use in
signal handlers. POSIX requires that fork is async-signal-safe,
but our current fork implementation is not. */
- bool multiple_threads = THREAD_GETMEM (THREAD_SELF, header.multiple_threads);
+ bool multiple_threads = __libc_single_threaded == 0;
__run_fork_handlers (atfork_run_prepare, multiple_threads);
--
2.25.1
More information about the Libc-alpha
mailing list