diff options
author | alkondratenko@gmail.com <alkondratenko@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2013-07-30 08:30:45 +0000 |
---|---|---|
committer | alkondratenko@gmail.com <alkondratenko@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2013-07-30 08:30:45 +0000 |
commit | 805a6601939edd9bca60a8911e56b217e477c75e (patch) | |
tree | 8ee1af0ac7e3cbf162d55f9871d79ca993afd6c5 | |
parent | c583a5babb54aedf6ab6e7746fd976ef2469839d (diff) | |
download | gperftools-805a6601939edd9bca60a8911e56b217e477c75e.tar.gz |
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
-rw-r--r-- | src/static_vars.cc | 4 |
1 files changed, 3 insertions, 1 deletions
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 |