diff options
Diffstat (limited to 'lldb/source/Target/Target.cpp')
-rw-r--r-- | lldb/source/Target/Target.cpp | 9 |
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 |