diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2012-03-26 16:19:35 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-03-26 16:19:36 -0700 |
commit | 56731351de7230180fc99a1a4b0afd12f881b0f7 (patch) | |
tree | 22b5dd0a852417d06cfda795ef04a65d0f5e859d | |
parent | 73b5cad989da317cc8089b57ee25f502b1cac71f (diff) | |
parent | 34e89c232dd5645fe3b5f9b40856d8e3e4cae57a (diff) | |
download | android_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.c | 5 |
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() |