From 6357b9a04f46682e5fcdfb60aabe81ee97db48e0 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 22 Dec 2020 14:08:13 +0300 Subject: [PATCH] perf_meter.cpp: register only named threads Can workaround some possible problems. --- rpcs3/Emu/perf_meter.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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);