From 795bc5d52ba22470b97d70a26531a74636c87075 Mon Sep 17 00:00:00 2001 From: RipleyTom Date: Tue, 28 Jan 2020 10:47:46 +0100 Subject: [PATCH] Add mutex guard for s_unfire --- Utilities/JIT.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Utilities/JIT.cpp b/Utilities/JIT.cpp index 466eb2e0a9..afcb6111f3 100644 --- a/Utilities/JIT.cpp +++ b/Utilities/JIT.cpp @@ -718,9 +718,9 @@ struct MemoryManager : llvm::RTDyldMemoryManager void registerEHFrames(u8* addr, u64 load_addr, std::size_t size) override { -#ifdef _WIN32 // Lock memory manager std::lock_guard lock(s_mutex); +#ifdef _WIN32 // Fix RUNTIME_FUNCTION records (.pdata section) decltype(s_unwater)::value_type pdata_entry = std::move(s_unwater.front()); s_unwater.pop_front(); @@ -784,7 +784,11 @@ struct MemoryManager2 : llvm::RTDyldMemoryManager { #ifndef _WIN32 RTDyldMemoryManager::registerEHFramesInProcess(addr, size); - s_unfire.push_front(std::make_pair(addr, size)); + { + // Lock memory manager + std::lock_guard lock(s_mutex); + s_unfire.push_front(std::make_pair(addr, size)); + } #endif }