summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralkondratenko@gmail.com <alkondratenko@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2013-07-30 08:30:45 +0000
committeralkondratenko@gmail.com <alkondratenko@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2013-07-30 08:30:45 +0000
commit805a6601939edd9bca60a8911e56b217e477c75e (patch)
tree8ee1af0ac7e3cbf162d55f9871d79ca993afd6c5
parentc583a5babb54aedf6ab6e7746fd976ef2469839d (diff)
downloadgperftools-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.cc4
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