summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libc/bionic/pthread-atfork.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libc/bionic/pthread-atfork.c b/libc/bionic/pthread-atfork.c
index 3a5189d..42420dc 100644
--- a/libc/bionic/pthread-atfork.c
+++ b/libc/bionic/pthread-atfork.c
@@ -74,6 +74,7 @@ void __bionic_atfork_run_prepare()
void __bionic_atfork_run_child()
{
struct atfork_t *cursor;
+ pthread_mutexattr_t attr;
/* Call pthread_atfork() child handlers */
for (cursor = atfork_head.cqh_first;
@@ -84,7 +85,9 @@ void __bionic_atfork_run_child()
}
}
- pthread_mutex_unlock(&handler_mutex);
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+ pthread_mutex_init(&handler_mutex, &attr);
}
void __bionic_atfork_run_parent()