Initialize arenas_tsd before setting it.

Reported by: Ethan Burns, Rich Prohaska, Tudor Bosman
This commit is contained in:
Jason Evans 2011-11-03 18:40:03 -07:00
parent f576c63f1e
commit 8e6f8b490d

View File

@ -769,6 +769,14 @@ malloc_init_hard(void)
} }
#endif #endif
if (malloc_mutex_init(&arenas_lock))
return (true);
if (pthread_key_create(&arenas_tsd, arenas_cleanup) != 0) {
malloc_mutex_unlock(&init_lock);
return (true);
}
/* /*
* Create enough scaffolding to allow recursive allocation in * Create enough scaffolding to allow recursive allocation in
* malloc_ncpus(). * malloc_ncpus().
@ -795,14 +803,6 @@ malloc_init_hard(void)
ARENA_SET(arenas[0]); ARENA_SET(arenas[0]);
arenas[0]->nthreads++; arenas[0]->nthreads++;
if (malloc_mutex_init(&arenas_lock))
return (true);
if (pthread_key_create(&arenas_tsd, arenas_cleanup) != 0) {
malloc_mutex_unlock(&init_lock);
return (true);
}
#ifdef JEMALLOC_PROF #ifdef JEMALLOC_PROF
if (prof_boot2()) { if (prof_boot2()) {
malloc_mutex_unlock(&init_lock); malloc_mutex_unlock(&init_lock);