* commit '7310a1c4326bc875aeea2ce091a4b6558d183b2d': Avoid malloc lock while calling pthread_atfork.
This commit is contained in:
commit
f71d757f6e
@ -24,6 +24,7 @@
|
||||
#define REALLOC_ZERO_BYTES_FREES 1
|
||||
#define USE_DL_PREFIX 1
|
||||
#define USE_LOCKS 1
|
||||
#define LOCK_AT_FORK 1
|
||||
#define USE_RECURSIVE_LOCK 0
|
||||
#define USE_SPIN_LOCKS 0
|
||||
|
||||
|
@ -3099,6 +3099,9 @@ static void post_fork_child(void) { INITIAL_LOCK(&(gm)->mutex); }
|
||||
|
||||
/* Initialize mparams */
|
||||
static int init_mparams(void) {
|
||||
/* BEGIN android-added: move pthread_atfork outside of lock */
|
||||
int first_run = 0;
|
||||
/* END android-added */
|
||||
#ifdef NEED_GLOBAL_LOCK_INIT
|
||||
if (malloc_global_mutex_status <= 0)
|
||||
init_malloc_global_mutex();
|
||||
@ -3109,6 +3112,9 @@ static int init_mparams(void) {
|
||||
size_t magic;
|
||||
size_t psize;
|
||||
size_t gsize;
|
||||
/* BEGIN android-added: move pthread_atfork outside of lock */
|
||||
first_run = 1;
|
||||
/* END android-added */
|
||||
|
||||
#ifndef WIN32
|
||||
psize = malloc_getpagesize;
|
||||
@ -3153,9 +3159,11 @@ static int init_mparams(void) {
|
||||
gm->mflags = mparams.default_mflags;
|
||||
(void)INITIAL_LOCK(&gm->mutex);
|
||||
#endif
|
||||
#if LOCK_AT_FORK
|
||||
/* BEGIN android-removed: move pthread_atfork outside of lock */
|
||||
#if 0 && LOCK_AT_FORK
|
||||
pthread_atfork(&pre_fork, &post_fork_parent, &post_fork_child);
|
||||
#endif
|
||||
/* END android-removed */
|
||||
|
||||
{
|
||||
#if USE_DEV_RANDOM
|
||||
@ -3184,6 +3192,13 @@ static int init_mparams(void) {
|
||||
}
|
||||
|
||||
RELEASE_MALLOC_GLOBAL_LOCK();
|
||||
/* BEGIN android-added: move pthread_atfork outside of lock */
|
||||
#if LOCK_AT_FORK
|
||||
if (first_run != 0) {
|
||||
pthread_atfork(&pre_fork, &post_fork_parent, &post_fork_child);
|
||||
}
|
||||
#endif
|
||||
/* END android-added */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user