]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
hurd _Fork: Drop duplicate malloc_fork_lock calls
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 11 Jul 2021 17:51:12 +0000 (17:51 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 11 Jul 2021 17:52:52 +0000 (17:52 +0000)
This was put in __libc_fork by c32c868ab8b2 ("posix: Add _Fork [BZ #4737]")
so we need to avoid locking them again in _Fork called by __libc_lock, otherwise
we deadlock.

sysdeps/mach/hurd/_Fork.c

index df4ee05faae607b1abdb437513e0f742418f3c2e..75d45d6cad5c3c1ad38d5d30d3076ca3a28d3eb5 100644 (file)
@@ -119,7 +119,6 @@ retry:
         handlers may use malloc, and the libio list lock has an
         indirect malloc dependency as well (via the getdelim
         function).  */
-      call_function_static_weak (__malloc_fork_lock_parent);
       _hurd_malloc_fork_prepare ();
 
       newtask = MACH_PORT_NULL;
@@ -588,7 +587,6 @@ retry:
 
       /* Release malloc locks.  */
       _hurd_malloc_fork_parent ();
-      call_function_static_weak (__malloc_fork_unlock_parent);
 
       /* Run things that want to run in the parent to restore it to
         normality.  Usually prepare hooks and parent hooks are
@@ -662,7 +660,6 @@ retry:
 
       /* Release malloc locks.  */
       _hurd_malloc_fork_child ();
-      call_function_static_weak (__malloc_fork_unlock_child);
 
       /* Run things that want to run in the child task to set up.  */
       RUN_HOOK (_hurd_fork_child_hook, ());