From 95ffb27c9c7496ede1409e042571054c70cb9519 Mon Sep 17 00:00:00 2001 From: Mmanu Chaturvedi Date: Fri, 12 May 2017 15:11:28 -0600 Subject: [PATCH] Fix static initialization order fiasco caused by global registry lock (#215) --- src/gflags.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gflags.cc b/src/gflags.cc index 921b4f9..08e4f45 100644 --- a/src/gflags.cc +++ b/src/gflags.cc @@ -726,7 +726,6 @@ class FlagRegistry { static FlagRegistry* global_registry_; // a singleton registry Mutex lock_; - static Mutex global_registry_lock_; static void InitGlobalRegistry(); @@ -929,10 +928,10 @@ bool FlagRegistry::SetFlagLocked(CommandLineFlag* flag, // Get the singleton FlagRegistry object FlagRegistry* FlagRegistry::global_registry_ = NULL; -Mutex FlagRegistry::global_registry_lock_(Mutex::LINKER_INITIALIZED); FlagRegistry* FlagRegistry::GlobalRegistry() { - MutexLock acquire_lock(&global_registry_lock_); + static Mutex lock(Mutex::LINKER_INITIALIZED); + MutexLock acquire_lock(&lock); if (!global_registry_) { global_registry_ = new FlagRegistry; }