From 805a6601939edd9bca60a8911e56b217e477c75e Mon Sep 17 00:00:00 2001 From: "alkondratenko@gmail.com" Date: Tue, 30 Jul 2013 08:30:45 +0000 Subject: issue-559: don't setup fork handler in InitStaticVars Because on OSX it calls malloc which leads to deadlock. Given that we don't really need that fork handler _that_ early, it's fine to change it to normal static initializer git-svn-id: http://gperftools.googlecode.com/svn/trunk@235 6b5cf1ce-ec42-a296-1ba9-69fdba395a50 --- src/static_vars.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/static_vars.cc b/src/static_vars.cc index e71a044..cb42c37 100644 --- a/src/static_vars.cc +++ b/src/static_vars.cc @@ -36,6 +36,7 @@ #include "internal_logging.h" // for CHECK_CONDITION #include "common.h" #include "sampler.h" // for Sampler +#include "base/googleinit.h" namespace tcmalloc { @@ -95,7 +96,6 @@ void Static::InitStaticVars() { for (int i = 0; i < kNumClasses; ++i) { central_cache_[i].Init(i); } - SetupAtForkLocksHandler(); // It's important to have PageHeap allocated, not in static storage, // so that HeapLeakChecker does not consider all the byte patterns stored @@ -106,4 +106,6 @@ void Static::InitStaticVars() { Sampler::InitStatics(); } +REGISTER_MODULE_INITIALIZER(tcmalloc_fork_handler, SetupAtForkLocksHandler()); + } // namespace tcmalloc -- cgit v1.2.1