Delay pthread_atfork registering.
This function causes recursive allocation on LinuxThreads. Signed-off-by: Crestez Dan Leonard <lcrestez@ixiacom.com>
This commit is contained in:
parent
93f39f8d23
commit
ac4403cacb
@ -695,17 +695,6 @@ malloc_init_hard(void)
|
||||
|
||||
malloc_conf_init();
|
||||
|
||||
#if (!defined(JEMALLOC_MUTEX_INIT_CB) && !defined(JEMALLOC_ZONE) \
|
||||
&& !defined(_WIN32))
|
||||
/* Register fork handlers. */
|
||||
if (pthread_atfork(jemalloc_prefork, jemalloc_postfork_parent,
|
||||
jemalloc_postfork_child) != 0) {
|
||||
malloc_write("<jemalloc>: Error in pthread_atfork()\n");
|
||||
if (opt_abort)
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (opt_stats_print) {
|
||||
/* Print statistics at exit. */
|
||||
if (atexit(stats_print_atexit) != 0) {
|
||||
@ -794,9 +783,25 @@ malloc_init_hard(void)
|
||||
return (true);
|
||||
}
|
||||
|
||||
/* Get number of CPUs. */
|
||||
malloc_mutex_unlock(&init_lock);
|
||||
/**********************************************************************/
|
||||
/* Recursive allocation may follow. */
|
||||
|
||||
ncpus = malloc_ncpus();
|
||||
|
||||
#if (!defined(JEMALLOC_MUTEX_INIT_CB) && !defined(JEMALLOC_ZONE) \
|
||||
&& !defined(_WIN32))
|
||||
/* LinuxThreads's pthread_atfork() allocates. */
|
||||
if (pthread_atfork(jemalloc_prefork, jemalloc_postfork_parent,
|
||||
jemalloc_postfork_child) != 0) {
|
||||
malloc_write("<jemalloc>: Error in pthread_atfork()\n");
|
||||
if (opt_abort)
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Done recursively allocating. */
|
||||
/**********************************************************************/
|
||||
malloc_mutex_lock(&init_lock);
|
||||
|
||||
if (mutex_boot()) {
|
||||
@ -843,6 +848,7 @@ malloc_init_hard(void)
|
||||
|
||||
malloc_initialized = true;
|
||||
malloc_mutex_unlock(&init_lock);
|
||||
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user