Fix bootstrapping order bug.

Initialize arenas_tsd earlier, so that the non-TLS case works when
profiling is enabled.
This commit is contained in:
Jason Evans 2011-03-23 00:27:50 -07:00
parent 47e57f9bda
commit c957398b4f

View File

@ -797,6 +797,11 @@ malloc_init_hard(void)
if (malloc_mutex_init(&arenas_lock)) if (malloc_mutex_init(&arenas_lock))
return (true); 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);
@ -835,11 +840,6 @@ malloc_init_hard(void)
malloc_write(")\n"); malloc_write(")\n");
} }
if (pthread_key_create(&arenas_tsd, arenas_cleanup) != 0) {
malloc_mutex_unlock(&init_lock);
return (true);
}
/* Allocate and initialize arenas. */ /* Allocate and initialize arenas. */
arenas = (arena_t **)base_alloc(sizeof(arena_t *) * narenas); arenas = (arena_t **)base_alloc(sizeof(arena_t *) * narenas);
if (arenas == NULL) { if (arenas == NULL) {