Author: zturner Date: Fri Feb 19 13:20:44 2016 New Revision: 261353 URL: http://llvm.org/viewvc/llvm-project?rev=261353&view=rev Log: Don't use an atexit handler for cleaning up the temp directory.
Differential Revision: http://reviews.llvm.org/D17420 Modified: lldb/trunk/include/lldb/Host/HostInfoBase.h lldb/trunk/source/Host/common/HostInfoBase.cpp lldb/trunk/source/Initialization/SystemInitializerCommon.cpp Modified: lldb/trunk/include/lldb/Host/HostInfoBase.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/HostInfoBase.h?rev=261353&r1=261352&r2=261353&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/HostInfoBase.h (original) +++ lldb/trunk/include/lldb/Host/HostInfoBase.h Fri Feb 19 13:20:44 2016 @@ -34,6 +34,8 @@ class HostInfoBase public: static void Initialize(); + static void + Terminate(); //------------------------------------------------------------------ /// Returns the number of CPUs on this current host. Modified: lldb/trunk/source/Host/common/HostInfoBase.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/HostInfoBase.cpp?rev=261353&r1=261352&r2=261353&view=diff ============================================================================== --- lldb/trunk/source/Host/common/HostInfoBase.cpp (original) +++ lldb/trunk/source/Host/common/HostInfoBase.cpp Fri Feb 19 13:20:44 2016 @@ -31,19 +31,6 @@ using namespace lldb_private; namespace { - void - CleanupProcessSpecificLLDBTempDir() - { - // Get the process specific LLDB temporary directory and delete it. - FileSpec tmpdir_file_spec; - if (!HostInfo::GetLLDBPath(ePathTypeLLDBTempSystemDir, tmpdir_file_spec)) - return; - - // Remove the LLDB temporary directory if we have one. Set "recurse" to - // true to all files that were created for the LLDB process can be cleaned up. - FileSystem::DeleteDirectory(tmpdir_file_spec, true); - } - //---------------------------------------------------------------------- // The HostInfoBaseFields is a work around for windows not supporting // static variables correctly in a thread safe way. Really each of the @@ -54,6 +41,16 @@ namespace struct HostInfoBaseFields { + ~HostInfoBaseFields() + { + if (m_lldb_process_tmp_dir.Exists()) + { + // Remove the LLDB temporary directory if we have one. Set "recurse" to + // true to all files that were created for the LLDB process can be cleaned up. + FileSystem::DeleteDirectory(m_lldb_process_tmp_dir, true); + } + } + uint32_t m_number_cpus; std::string m_vendor_string; std::string m_os_string; @@ -82,6 +79,13 @@ HostInfoBase::Initialize() g_fields = new HostInfoBaseFields(); } +void +HostInfoBase::Terminate() +{ + delete g_fields; + g_fields = nullptr; +} + uint32_t HostInfoBase::GetNumberCPUS() { @@ -335,9 +339,6 @@ HostInfoBase::ComputeProcessTempFileDire if (!FileSystem::MakeDirectory(temp_file_spec, eFilePermissionsDirectoryDefault).Success()) return false; - // Make an atexit handler to clean up the process specify LLDB temp dir - // and all of its contents. - ::atexit(CleanupProcessSpecificLLDBTempDir); file_spec.GetDirectory().SetCString(temp_file_spec.GetCString()); return true; } Modified: lldb/trunk/source/Initialization/SystemInitializerCommon.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Initialization/SystemInitializerCommon.cpp?rev=261353&r1=261352&r2=261353&view=diff ============================================================================== --- lldb/trunk/source/Initialization/SystemInitializerCommon.cpp (original) +++ lldb/trunk/source/Initialization/SystemInitializerCommon.cpp Fri Feb 19 13:20:44 2016 @@ -194,5 +194,6 @@ SystemInitializerCommon::Terminate() #endif OperatingSystemGo::Terminate(); + HostInfo::Terminate(); Log::Terminate(); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits