From b813c86bf1700bd8111318329da4bd7d0307b96f Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Thu, 22 Jul 2021 13:04:03 -0400 Subject: [PATCH] GP-0: Debugger test fixes. --- .../gdb/model/impl/GdbModelTargetProcessMemory.java | 2 +- .../breakpoint/DebuggerBreakpointsProviderTest.java | 12 ++++++++++-- .../java/ghidra/dbg/agent/AbstractTargetObject.java | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/model/impl/GdbModelTargetProcessMemory.java b/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/model/impl/GdbModelTargetProcessMemory.java index d1a62a11f0..660a0e7403 100644 --- a/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/model/impl/GdbModelTargetProcessMemory.java +++ b/Ghidra/Debug/Debugger-agent-gdb/src/main/java/agent/gdb/model/impl/GdbModelTargetProcessMemory.java @@ -67,7 +67,7 @@ public class GdbModelTargetProcessMemory synchronized (this) { regions = byStart.values().stream().map(this::getTargetRegion).collect(Collectors.toList()); - if (regions.isEmpty()) { + if (regions.isEmpty() && valid) { Map defaultMap = new HashMap(); AddressSet addressSet = impl.getAddressFactory().getAddressSet(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java index afa7879316..8de8620222 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java @@ -27,6 +27,7 @@ import org.junit.Test; import com.google.common.collect.Range; +import docking.widgets.table.RowWrappedEnumeratedColumnTableModel; import generic.Unique; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.DebuggerResources.*; @@ -496,6 +497,13 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge }); } + protected static List copyModelData( + RowWrappedEnumeratedColumnTableModel model) { + synchronized (model) { + return List.copyOf(model.getModelData()); + } + } + @Test public void testActionFilters() throws Exception { createTestModel(); @@ -525,7 +533,7 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge // Because mapping service debounces, wait for breakpoints to be reconciled LogicalBreakpointTableModel bptModel = breakpointsProvider.breakpointTableModel; waitForPass(() -> { - List data = bptModel.getModelData(); + List data = copyModelData(bptModel); assertEquals(2, data.size()); LogicalBreakpointRow row1 = data.get(0); LogicalBreakpointRow row2 = data.get(1); @@ -548,7 +556,7 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge assertEquals(2, lb2.getTraceBreakpoints().size()); }); - List breakData = bptModel.getModelData(); + List breakData = copyModelData(bptModel); List filtLocs = breakpointsProvider.locationFilterPanel.getTableFilterModel().getModelData(); diff --git a/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java b/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java index 72b9106936..265a3ae821 100644 --- a/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java +++ b/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java @@ -61,7 +61,7 @@ public abstract class AbstractTargetObject

implements Sp protected final String typeHint; protected final TargetObjectSchema schema; - protected boolean valid = true; + protected volatile boolean valid = true; // TODO: Remove these, and just do invocations on model's listeners? protected final ListenerSet listeners;