From 8d6326da07006be2dc0d20b3454806d04e9cfd9a Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:39:08 -0600 Subject: [PATCH] Update locking in dbghelp_syminit_manager --- src/utils/dbghelp_syminit_manager.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/utils/dbghelp_syminit_manager.hpp b/src/utils/dbghelp_syminit_manager.hpp index 0f421ae..6f7ffd7 100644 --- a/src/utils/dbghelp_syminit_manager.hpp +++ b/src/utils/dbghelp_syminit_manager.hpp @@ -4,7 +4,6 @@ #include "../utils/common.hpp" #include "../utils/utils.hpp" -#include #include #include @@ -14,7 +13,6 @@ namespace cpptrace { namespace detail { struct dbghelp_syminit_manager { std::unordered_set set; - std::mutex mutex; ~dbghelp_syminit_manager() { for(auto handle : set) { @@ -26,7 +24,6 @@ namespace detail { void init(HANDLE proc) { if(set.count(proc) == 0) { - std::lock_guard lock(mutex); if(!SymInitialize(proc, NULL, TRUE)) { throw std::logic_error(stringf("SymInitialize failed %llu", to_ull(GetLastError()))); } @@ -35,6 +32,7 @@ namespace detail { } }; + // Thread-safety: Must only be called from symbols_with_dbghelp while the dbghelp_lock lock is held inline dbghelp_syminit_manager& get_syminit_manager() { static dbghelp_syminit_manager syminit_manager; return syminit_manager;