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();
|
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) {
|
if (opt_stats_print) {
|
||||||
/* Print statistics at exit. */
|
/* Print statistics at exit. */
|
||||||
if (atexit(stats_print_atexit) != 0) {
|
if (atexit(stats_print_atexit) != 0) {
|
||||||
@ -794,9 +783,25 @@ malloc_init_hard(void)
|
|||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get number of CPUs. */
|
|
||||||
malloc_mutex_unlock(&init_lock);
|
malloc_mutex_unlock(&init_lock);
|
||||||
|
/**********************************************************************/
|
||||||
|
/* Recursive allocation may follow. */
|
||||||
|
|
||||||
ncpus = malloc_ncpus();
|
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);
|
malloc_mutex_lock(&init_lock);
|
||||||
|
|
||||||
if (mutex_boot()) {
|
if (mutex_boot()) {
|
||||||
@ -843,6 +848,7 @@ malloc_init_hard(void)
|
|||||||
|
|
||||||
malloc_initialized = true;
|
malloc_initialized = true;
|
||||||
malloc_mutex_unlock(&init_lock);
|
malloc_mutex_unlock(&init_lock);
|
||||||
|
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user