diff --git a/rpcs3/Emu/perf_meter.cpp b/rpcs3/Emu/perf_meter.cpp index e64fc939e1..f70ef3eb9f 100644 --- a/rpcs3/Emu/perf_meter.cpp +++ b/rpcs3/Emu/perf_meter.cpp @@ -2,6 +2,7 @@ #include "perf_meter.hpp" #include "util/sysinfo.hpp" +#include "Utilities/Thread.h" #include #include @@ -105,6 +106,12 @@ static std::multimap s_perf_sources; void perf_stat_base::add(u64 ns[66], const char* name) noexcept { + // Don't attempt to register some foreign/unnamed threads + if (!thread_ctrl::get_current()) + { + return; + } + std::lock_guard lock(s_perf_mutex); s_perf_sources.emplace(name, ns); @@ -113,6 +120,11 @@ void perf_stat_base::add(u64 ns[66], const char* name) noexcept void perf_stat_base::remove(u64 ns[66], const char* name) noexcept { + if (!thread_ctrl::get_current()) + { + return; + } + std::lock_guard lock(s_perf_mutex); const auto found = s_perf_sources.equal_range(name);