Make Singleton dependency on Symbolizer Facebook-only
[folly.git] / folly / experimental / Singleton-inl.h
index 45e112dd95448e6d0139dce6afb3ba43737cae6f..ac515db414d785e18c5a9014e7ea090c40b96958 100644 (file)
@@ -158,23 +158,13 @@ void SingletonHolder<T>::createInstance() {
       if (print_destructor_stack_trace->load()) {
         std::string output = "Singleton " + type_name + " was destroyed.\n";
 
-        // Get and symbolize stack trace
-        constexpr size_t kMaxStackTraceDepth = 100;
-        symbolizer::FrameArray<kMaxStackTraceDepth> addresses;
-        if (!getStackTraceSafe(addresses)) {
+        auto stack_trace_getter = SingletonVault::stackTraceGetter().load();
+        auto stack_trace = stack_trace_getter ? stack_trace_getter() : "";
+        if (stack_trace.empty()) {
           output += "Failed to get destructor stack trace.";
         } else {
           output += "Destructor stack trace:\n";
-
-          constexpr size_t kDefaultCapacity = 500;
-          symbolizer::ElfCache elfCache(kDefaultCapacity);
-
-          symbolizer::Symbolizer symbolizer(&elfCache);
-          symbolizer.symbolize(addresses);
-
-          symbolizer::StringSymbolizePrinter printer;
-          printer.println(addresses);
-          output += printer.str();
+          output += stack_trace;
         }
 
         LOG(ERROR) << output;