diff --git a/mozilla/memory/jemalloc/jemalloc.c b/mozilla/memory/jemalloc/jemalloc.c index 22a979bb819..0daedea8d4f 100644 --- a/mozilla/memory/jemalloc/jemalloc.c +++ b/mozilla/memory/jemalloc/jemalloc.c @@ -1199,6 +1199,9 @@ static #endif bool malloc_init_hard(void); +void _malloc_prefork(void); +void _malloc_postfork(void); + /* * End function prototypes. */ @@ -5489,6 +5492,11 @@ MALLOC_OUT: #endif } +#if (!defined(MOZ_MEMORY_WINDOWS) && !defined(MOZ_MEMORY_DARWIN)) + /* Prevent potential deadlock on malloc locks after fork. */ + pthread_atfork(_malloc_prefork, _malloc_postfork, _malloc_postfork); +#endif + /* Set variables according to the value of opt_small_max_2pow. */ if (opt_small_max_2pow < opt_quantum_2pow) opt_small_max_2pow = opt_quantum_2pow;