From 6858988df359c353b54df50d763771351743b06d Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Fri, 20 Oct 2017 19:44:53 +0000 Subject: [PATCH] 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. llvm-svn: 316231 --- lldb/include/lldb/Utility/Log.h | 6 ------ lldb/include/lldb/Utility/Logging.h | 2 +- lldb/source/Initialization/SystemInitializerCommon.cpp | 2 +- lldb/source/Utility/Log.cpp | 18 ------------------ lldb/source/Utility/Logging.cpp | 2 +- 5 files changed, 3 insertions(+), 27 deletions(-) diff --git a/lldb/include/lldb/Utility/Log.h b/lldb/include/lldb/Utility/Log.h index 845ea160..d856fc8 100644 --- a/lldb/include/lldb/Utility/Log.h +++ b/lldb/include/lldb/Utility/Log.h @@ -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 categories); - static void LockAllChannels(); - static void UnlockAllChannels(); - Log(const Log &) = delete; void operator=(const Log &) = delete; }; diff --git a/lldb/include/lldb/Utility/Logging.h b/lldb/include/lldb/Utility/Logging.h index 2c75a3b..865097e 100644 --- a/lldb/include/lldb/Utility/Logging.h +++ b/lldb/include/lldb/Utility/Logging.h @@ -62,7 +62,7 @@ Log *GetLogIfAllCategoriesSet(uint32_t mask); Log *GetLogIfAnyCategoriesSet(uint32_t mask); -void InitializeLldbChannel(); +void InitializeLog(); } // namespace lldb_private diff --git a/lldb/source/Initialization/SystemInitializerCommon.cpp b/lldb/source/Initialization/SystemInitializerCommon.cpp index 8535470..e76ba41 100644 --- a/lldb/source/Initialization/SystemInitializerCommon.cpp +++ b/lldb/source/Initialization/SystemInitializerCommon.cpp @@ -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); diff --git a/lldb/source/Utility/Log.cpp b/lldb/source/Utility/Log.cpp index ffdb6c4..a80b106 100644 --- a/lldb/source/Utility/Log.cpp +++ b/lldb/source/Utility/Log.cpp @@ -32,7 +32,6 @@ #include // for getpid #else #include -#include #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, llvm::StringRef function, 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(); -} diff --git a/lldb/source/Utility/Logging.cpp b/lldb/source/Utility/Logging.cpp index c9a6ef1..0bd6d66 100644 --- a/lldb/source/Utility/Logging.cpp +++ b/lldb/source/Utility/Logging.cpp @@ -51,7 +51,7 @@ static constexpr Log::Category g_categories[] = { 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); } -- 2.7.4