This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-178-ge67f54a


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  e67f54ab1a6253dd69cb2c770d785c7eb6d2172c (commit)
      from  87ab10d6524fe4faabd7eb3eac5868165ecfb323 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e67f54ab1a6253dd69cb2c770d785c7eb6d2172c

commit e67f54ab1a6253dd69cb2c770d785c7eb6d2172c
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Thu Sep 22 01:45:48 2016 +0200

    hurdmalloc: Run fork handler as late as possible [BZ #19431]
    
    This is the hurd-specific follow-up for
    29d794863cd6e03115d3670707cc873a9965ba92 : hurdmalloc also needs the
    same fix
    
    	* hurd/hurdmalloc.c (malloc_fork_prepare): Rename to
    	_hurd_malloc_fork_prepare.
    	(malloc_fork_parent): Rename to _hurd_malloc_fork_parent.
    	(malloc_fork_child): Rename to _hurd_malloc_fork_child.
    	(_hurd_fork_prepare_hook): Drop malloc_fork_prepare.
    	(_hurd_fork_parent_hook): Drop malloc_fork_parent.
    	(_hurd_fork_child_hook): Drop malloc_fork_child.
    	* hurd/hurdmalloc.h (_hurd_malloc_fork_prepare,
    	_hurd_malloc_fork_parent, _hurd_malloc_fork_child): Add declarations.
    	* sysdeps/mach/hurd/fork.c (__fork): Call __malloc_fork_lock_parent
    	after locking locks (notably hurd_dtable_lock). Call
    	_hurd_malloc_fork_prepare after that. Call _hurd_malloc_fork_parent
    	before __malloc_fork_unlock_parent and _hurd_malloc_fork_child before
    	__malloc_fork_unlock_child.

diff --git a/ChangeLog b/ChangeLog
index e928977..b2add6a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2016-09-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* hurd/hurdmalloc.c (malloc_fork_prepare): Rename to
+	_hurd_malloc_fork_prepare.
+	(malloc_fork_parent): Rename to _hurd_malloc_fork_parent.
+	(malloc_fork_child): Rename to _hurd_malloc_fork_child.
+	(_hurd_fork_prepare_hook): Drop malloc_fork_prepare.
+	(_hurd_fork_parent_hook): Drop malloc_fork_parent.
+	(_hurd_fork_child_hook): Drop malloc_fork_child.
+	* hurd/hurdmalloc.h (_hurd_malloc_fork_prepare,
+	_hurd_malloc_fork_parent, _hurd_malloc_fork_child): Add declarations.
+	* sysdeps/mach/hurd/fork.c (__fork): Call __malloc_fork_lock_parent
+	after locking locks (notably hurd_dtable_lock). Call
+	_hurd_malloc_fork_prepare after that. Call _hurd_malloc_fork_parent
+	before __malloc_fork_unlock_parent and _hurd_malloc_fork_child before
+	__malloc_fork_unlock_child.
+
 2016-09-21  James Greenhalgh  <james.greenhalgh@arm.com>
 
 	* soft-fp/extendhftf2.c: New.
diff --git a/hurd/hurdmalloc.c b/hurd/hurdmalloc.c
index 58c29fa..65fb959 100644
--- a/hurd/hurdmalloc.c
+++ b/hurd/hurdmalloc.c
@@ -405,8 +405,8 @@ print_malloc_free_list (void)
 }
 #endif	/* DEBUG */
 
-static void
-malloc_fork_prepare(void)
+void
+_hurd_malloc_fork_prepare(void)
 /*
  * Prepare the malloc module for a fork by insuring that no thread is in a
  * malloc critical section.
@@ -419,8 +419,8 @@ malloc_fork_prepare(void)
     }
 }
 
-static void
-malloc_fork_parent(void)
+void
+_hurd_malloc_fork_parent(void)
 /*
  * Called in the parent process after a fork() to resume normal operation.
  */
@@ -432,8 +432,8 @@ malloc_fork_parent(void)
     }
 }
 
-static void
-malloc_fork_child(void)
+void
+_hurd_malloc_fork_child(void)
 /*
  * Called in the child process after a fork() to resume normal operation.
  */
@@ -446,7 +446,4 @@ malloc_fork_child(void)
 }
 
 
-text_set_element (_hurd_fork_prepare_hook, malloc_fork_prepare);
-text_set_element (_hurd_fork_parent_hook, malloc_fork_parent);
-text_set_element (_hurd_fork_child_hook, malloc_fork_child);
 text_set_element (_hurd_preinit_hook, malloc_init);
diff --git a/hurd/hurdmalloc.h b/hurd/hurdmalloc.h
index e11c208..3520ffa 100644
--- a/hurd/hurdmalloc.h
+++ b/hurd/hurdmalloc.h
@@ -12,6 +12,10 @@ extern void *_hurd_malloc (size_t);
 extern void *_hurd_realloc (void *, size_t);
 extern void _hurd_free (void *);
 
+extern void _hurd_malloc_fork_prepare (void);
+extern void _hurd_malloc_fork_parent (void);
+extern void _hurd_malloc_fork_child (void);
+
 #define malloc	_hurd_malloc
 #define realloc	_hurd_realloc
 #define free	_hurd_free
diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c
index 9973b1b..9e863a8 100644
--- a/sysdeps/mach/hurd/fork.c
+++ b/sysdeps/mach/hurd/fork.c
@@ -108,12 +108,6 @@ __fork (void)
       /* Run things that prepare for forking before we create the task.  */
       RUN_HOOK (_hurd_fork_prepare_hook, ());
 
-      /* Acquire malloc locks.  This needs to come last because fork
-	 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);
-
       /* Lock things that want to be locked before we fork.  */
       {
 	void *const *p;
@@ -124,6 +118,13 @@ __fork (void)
       }
       __mutex_lock (&_hurd_siglock);
 
+      /* Acquire malloc locks.  This needs to come last because fork
+	 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;
       thread = sigthread = MACH_PORT_NULL;
       newproc = MACH_PORT_NULL;
@@ -612,6 +613,7 @@ __fork (void)
 	}
 
       /* 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
@@ -666,6 +668,7 @@ __fork (void)
       __sigemptyset (&_hurdsig_traced);
 
       /* 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.  */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                |   17 +++++++++++++++++
 hurd/hurdmalloc.c        |   15 ++++++---------
 hurd/hurdmalloc.h        |    4 ++++
 sysdeps/mach/hurd/fork.c |   15 +++++++++------
 4 files changed, 36 insertions(+), 15 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]