[Lldb-commits] [lldb] r316231 - Revert "Logging: Make sure logging machinery is in a consistent state after forking"

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 20 12:44:54 PDT 2017


Author: labath
Date: Fri Oct 20 12:44:53 2017
New Revision: 316231

URL: http://llvm.org/viewvc/llvm-project?rev=316231&view=rev
Log:
Revert "Logging: Make sure logging machinery is in a consistent state after forking"

The pthread_atfork trick breaks on android, because
pthread_rwlock_unlock detects that it is not the same thread which
locked the lock. This means that the subsequent lock attempt will still
deadlock (only this time it happens deterministically instead of at
random). Reverting to find a better solution.

This reverts commit r316173.

Modified:
    lldb/trunk/include/lldb/Utility/Log.h
    lldb/trunk/include/lldb/Utility/Logging.h
    lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
    lldb/trunk/source/Utility/Log.cpp
    lldb/trunk/source/Utility/Logging.cpp

Modified: lldb/trunk/include/lldb/Utility/Log.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Log.h?rev=316231&r1=316230&r2=316231&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/Log.h (original)
+++ lldb/trunk/include/lldb/Utility/Log.h Fri Oct 20 12:44:53 2017
@@ -96,9 +96,6 @@ public:
     }
   };
 
-
-  static void Initialize();
-
   //------------------------------------------------------------------
   // Static accessors for logging channels
   //------------------------------------------------------------------
@@ -196,9 +193,6 @@ private:
   static uint32_t GetFlags(llvm::raw_ostream &stream, const ChannelMap::value_type &entry,
                            llvm::ArrayRef<const char *> categories);
 
-  static void LockAllChannels();
-  static void UnlockAllChannels();
-
   Log(const Log &) = delete;
   void operator=(const Log &) = delete;
 };

Modified: lldb/trunk/include/lldb/Utility/Logging.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Logging.h?rev=316231&r1=316230&r2=316231&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/Logging.h (original)
+++ lldb/trunk/include/lldb/Utility/Logging.h Fri Oct 20 12:44:53 2017
@@ -62,7 +62,7 @@ Log *GetLogIfAllCategoriesSet(uint32_t m
 
 Log *GetLogIfAnyCategoriesSet(uint32_t mask);
 
-void InitializeLldbChannel();
+void InitializeLog();
 
 } // namespace lldb_private
 

Modified: lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Initialization/SystemInitializerCommon.cpp?rev=316231&r1=316230&r2=316231&view=diff
==============================================================================
--- lldb/trunk/source/Initialization/SystemInitializerCommon.cpp (original)
+++ lldb/trunk/source/Initialization/SystemInitializerCommon.cpp Fri Oct 20 12:44:53 2017
@@ -70,7 +70,7 @@ void SystemInitializerCommon::Initialize
 #endif
 
   llvm::EnablePrettyStackTrace();
-  Log::Initialize();
+  InitializeLog();
   HostInfo::Initialize();
   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);

Modified: lldb/trunk/source/Utility/Log.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Log.cpp?rev=316231&r1=316230&r2=316231&view=diff
==============================================================================
--- lldb/trunk/source/Utility/Log.cpp (original)
+++ lldb/trunk/source/Utility/Log.cpp Fri Oct 20 12:44:53 2017
@@ -32,7 +32,6 @@
 #include <process.h> // for getpid
 #else
 #include <unistd.h>
-#include <pthread.h>
 #endif
 
 using namespace lldb_private;
@@ -182,13 +181,6 @@ void Log::Warning(const char *format, ..
   Printf("warning: %s", Content.c_str());
 }
 
-void Log::Initialize() {
-#ifdef LLVM_ON_UNIX
-  pthread_atfork(&Log::LockAllChannels, &Log::UnlockAllChannels, &Log::UnlockAllChannels);
-#endif
-  InitializeLldbChannel();
-}
-
 void Log::Register(llvm::StringRef name, Channel &channel) {
   auto iter = g_channel_map->try_emplace(name, channel);
   assert(iter.second == true);
@@ -329,13 +321,3 @@ void Log::Format(llvm::StringRef file, l
   message << payload << "\n";
   WriteMessage(message.str());
 }
-
-void Log::LockAllChannels() {
-  for (auto &c: *g_channel_map)
-    c.second.m_mutex.lock();
-}
-
-void Log::UnlockAllChannels() {
-  for (auto &c: *g_channel_map)
-    c.second.m_mutex.unlock();
-}

Modified: lldb/trunk/source/Utility/Logging.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Logging.cpp?rev=316231&r1=316230&r2=316231&view=diff
==============================================================================
--- lldb/trunk/source/Utility/Logging.cpp (original)
+++ lldb/trunk/source/Utility/Logging.cpp Fri Oct 20 12:44:53 2017
@@ -51,7 +51,7 @@ static constexpr Log::Category g_categor
 
 static Log::Channel g_log_channel(g_categories, LIBLLDB_LOG_DEFAULT);
 
-void lldb_private::InitializeLldbChannel() {
+void lldb_private::InitializeLog() {
   Log::Register("lldb", g_log_channel);
 }
 




More information about the lldb-commits mailing list