make extent_hooks static.
authorQi Wang <qiwang@fb.com>
Thu, 8 Jun 2017 17:26:32 +0000 (10:26 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 8 Jun 2017 17:35:33 +0000 (10:35 -0700)
Summary:
Make extent hooks static and avoid calling arena_destroy, in case there are
alive allocations not freed yet.

Reviewed By: yfeldblum

Differential Revision: D5208102

fbshipit-source-id: 612c772347cd90227fa303fd0b059edbaeb7d4e2

folly/experimental/JemallocNodumpAllocator.cpp
folly/experimental/JemallocNodumpAllocator.h

index 77d9724b4962a4b48a1eb04faebde68d0ba11ebc..481efd000457d5d95a4ea0a68bd16e9c779607c6 100644 (file)
@@ -29,19 +29,6 @@ JemallocNodumpAllocator::JemallocNodumpAllocator(State state) {
   }
 }
 
-JemallocNodumpAllocator::~JemallocNodumpAllocator() {
-#ifdef FOLLY_JEMALLOC_NODUMP_ALLOCATOR_EXTENT
-  if (arena_index_ != 0) {
-    // Destroy the arena because the hooks are linked to us.
-    const auto key = folly::to<std::string>("arena.", arena_index_, ".destroy");
-    if (auto ret = mallctl(key.c_str(), nullptr, 0, nullptr, 0)) {
-      LOG(FATAL) << "Unable to destroy arena: " << errnoStr(ret);
-    }
-    LOG(INFO) << "Destroy arena: " << arena_index_;
-  }
-#endif
-}
-
 bool JemallocNodumpAllocator::extend_and_setup_arena() {
 #ifdef FOLLY_JEMALLOC_NODUMP_ALLOCATOR_SUPPORTED
   if (mallctl == nullptr) {
@@ -132,6 +119,7 @@ chunk_alloc_t* JemallocNodumpAllocator::original_alloc_ = nullptr;
 void* JemallocNodumpAllocator::alloc(
     void* chunk,
 #else
+extent_hooks_t JemallocNodumpAllocator::extent_hooks_;
 extent_alloc_t* JemallocNodumpAllocator::original_alloc_ = nullptr;
 void* JemallocNodumpAllocator::alloc(
     extent_hooks_t* extent,
index 40ebe99eb7817178aed9caf4c7bb68c737e97c61..e6756aa170cef23fc43b6ea755816a9e6f54b05b 100644 (file)
@@ -76,7 +76,6 @@ class JemallocNodumpAllocator {
   static void deallocate(void* p, void* userData);
 
   explicit JemallocNodumpAllocator(State state = State::ENABLED);
-  ~JemallocNodumpAllocator();
 
   void* allocate(size_t size);
   void* reallocate(void* p, size_t size);
@@ -92,7 +91,7 @@ class JemallocNodumpAllocator {
   static void* alloc(
       void* chunk,
 #else
-  extent_hooks_t extent_hooks_;
+  static extent_hooks_t extent_hooks_;
   static extent_alloc_t* original_alloc_;
   static void* alloc(
       extent_hooks_t* extent,