[Lldb-commits] [lldb] r261353 - Don't use an atexit handler for cleaning up the temp directory.

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Fri Feb 19 11:20:44 PST 2016


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();
 }




More information about the lldb-commits mailing list