summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Target.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Target/Target.cpp')
-rw-r--r--lldb/source/Target/Target.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index 9719457ff41..9ba667690c8 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -2778,13 +2778,14 @@ Target::RunStopHooks ()
const TargetPropertiesSP &
Target::GetGlobalProperties()
{
- static TargetPropertiesSP g_settings_sp;
+ // NOTE: intentional leak so we don't crash if global destructor chain gets
+ // called as other threads still use the result of this function
+ static TargetPropertiesSP *g_settings_sp_ptr = nullptr;
static std::once_flag g_once_flag;
std::call_once(g_once_flag, []() {
- if (!g_settings_sp)
- g_settings_sp.reset(new TargetProperties(nullptr));
+ g_settings_sp_ptr = new TargetPropertiesSP(new TargetProperties(nullptr));
});
- return g_settings_sp;
+ return *g_settings_sp_ptr;
}
Error
OpenPOWER on IntegriCloud