From c8316abaaa68260e12cb6c7ac86852b6ca7b5268 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Thu, 22 Jul 2021 17:08:32 -0400 Subject: [PATCH] GP-1154: Trying to resolve yet another trace-related deadlock --- .../src/main/java/ghidra/trace/database/DBTrace.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java index 4912377b78..93b31fccf5 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java @@ -524,7 +524,8 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace } @Override - public DBTraceProgramView getFixedProgramView(long snap) { + // NOTE: addListener synchronizes on this and might generate callbacks immediately + public synchronized DBTraceProgramView getFixedProgramView(long snap) { // NOTE: The new viewport will need to read from the time manager during init try (LockHold hold = lockRead()) { synchronized (fixedProgramViews) { @@ -538,7 +539,8 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace } @Override - public DBTraceVariableSnapProgramView createProgramView(long snap) { + // NOTE: Ditto getFixedProgramView + public synchronized DBTraceVariableSnapProgramView createProgramView(long snap) { // NOTE: The new viewport will need to read from the time manager during init try (LockHold hold = lockRead()) { synchronized (programViews) {