Index: lib/Support/DynamicLibrary.cpp =================================================================== --- lib/Support/DynamicLibrary.cpp +++ lib/Support/DynamicLibrary.cpp @@ -128,9 +128,14 @@ DynamicLibrary DynamicLibrary::getPermanentLibrary(const char *FileName, std::string *Err) { SmartScopedLock Lock(*SymbolsMutex); + + // Force OpenedHandles to be added into the ManagedStatic list before any + // ManagedStatic can be added from static constructors in HandleSet::DLOpen. + HandleSet& HS = *OpenedHandles; + void *Handle = HandleSet::DLOpen(FileName, Err); if (Handle != &Invalid) - OpenedHandles->AddLibrary(Handle, /*IsProcess*/ FileName == nullptr); + HS.AddLibrary(Handle, /*IsProcess*/ FileName == nullptr); return DynamicLibrary(Handle); }