From 5f0e660c64502d3959366851f03b3dda35ccab7a Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Fri, 13 Sep 2024 08:48:16 -0400 Subject: [PATCH] GP-0: Fix concurrency issue in TraceRmiTarget. --- .../plugin/core/debug/service/tracermi/TraceRmiTarget.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java index 673c3a444b..f4e0807698 100644 --- a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java +++ b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java @@ -809,12 +809,14 @@ public class TraceRmiTarget extends AbstractTarget { public MatchedMethod getBest(String name, ActionName action, Supplier> preferredSupplier) { - return map.computeIfAbsent(name, n -> chooseBest(action, preferredSupplier.get())); + return getBest(name, action, preferredSupplier.get()); } public MatchedMethod getBest(String name, ActionName action, List preferred) { - return map.computeIfAbsent(name, n -> chooseBest(action, preferred)); + synchronized (map) { + return map.computeIfAbsent(name, n -> chooseBest(action, preferred)); + } } private MatchedMethod chooseBest(ActionName name, List preferred) {