aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2012-03-26 16:19:35 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-03-26 16:19:36 -0700
commit56731351de7230180fc99a1a4b0afd12f881b0f7 (patch)
tree22b5dd0a852417d06cfda795ef04a65d0f5e859d
parent73b5cad989da317cc8089b57ee25f502b1cac71f (diff)
parent34e89c232dd5645fe3b5f9b40856d8e3e4cae57a (diff)
downloadandroid_bionic-56731351de7230180fc99a1a4b0afd12f881b0f7.tar.gz
android_bionic-56731351de7230180fc99a1a4b0afd12f881b0f7.tar.bz2
android_bionic-56731351de7230180fc99a1a4b0afd12f881b0f7.zip
Merge "bionic: fix atfork hanlder_mutex deadlock"
-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 3a5189d8c..42420dc4c 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()