Commit 89736661 authored by Igor Sugak's avatar Igor Sugak Committed by Facebook Github Bot

Backed out changeset d4e3fdfd5775

Summary:
https://our.intern.facebook.com/intern/sevmanager/view/s/145809/?hc_location=ufi

```
hg backout d4e3fdfd57750c8dcabdb4c01ab3b528c4818624
```

Reviewed By: lbrandy

Differential Revision: D4799568

fbshipit-source-id: 76366040702e68becc7e245d7ce15832f933e10e
parent 406098e7
......@@ -228,17 +228,6 @@ void SingletonHolder<T>::createInstance() {
creating_thread_.store(std::this_thread::get_id(), std::memory_order_release);
auto state = vault_.state_.rlock();
if (vault_.type_ != SingletonVault::Type::Relaxed &&
!state->registrationComplete) {
auto stack_trace_getter = SingletonVault::stackTraceGetter().load();
auto stack_trace = stack_trace_getter ? stack_trace_getter() : "";
if (!stack_trace.empty()) {
stack_trace = "Stack trace:\n" + stack_trace;
}
LOG(FATAL) << "Singleton " << type().name() << " requested before "
<< "registrationComplete() call. " << stack_trace;
}
if (state->state == SingletonVault::SingletonVaultState::Quiescing) {
return;
}
......
......@@ -16,10 +16,6 @@
#include <folly/Singleton.h>
#ifndef _WIN32
#include <dlfcn.h>
#endif
#include <atomic>
#include <cstdio>
#include <cstdlib>
......@@ -28,26 +24,8 @@
#include <folly/ScopeGuard.h>
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__ANDROID__)
static void hs_init_weak(int* argc, char** argv[])
__attribute__((__weakref__("hs_init")));
#endif
namespace folly {
SingletonVault::Type SingletonVault::defaultVaultType() {
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__ANDROID__)
bool isPython = dlsym(RTLD_DEFAULT, "Py_Main");
bool isHaskell = &::hs_init_weak || dlsym(RTLD_DEFAULT, "hs_init");
bool isJVM = dlsym(RTLD_DEFAULT, "JNI_GetCreatedJavaVMs");
bool isD = dlsym(RTLD_DEFAULT, "_d_run_main");
return (isPython || isHaskell || isJVM || isD) ? Type::Relaxed : Type::Strict;
#else
return Type::Relaxed;
#endif
}
namespace detail {
[[noreturn]] void singletonWarnDoubleRegistrationAndAbort(
......
......@@ -358,9 +358,7 @@ class SingletonVault {
}
};
static Type defaultVaultType();
explicit SingletonVault(Type type = defaultVaultType()) : type_(type) {}
explicit SingletonVault(Type type = Type::Strict) : type_(type) {}
// Destructor is only called by unit tests to check destroyInstances.
~SingletonVault();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment