From dd37995833de6165b2f71ecc9776f83703651543 Mon Sep 17 00:00:00 2001 From: d-millar <33498836+d-millar@users.noreply.github.com> Date: Tue, 23 Feb 2021 11:47:24 -0500 Subject: [PATCH] fix for isInstance/isStopped failure caused by DTO:gateFuture --- .../gui/objects/DebuggerObjectsProvider.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProvider.java index 37611a6128..e3e2e44bf7 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProvider.java @@ -21,6 +21,7 @@ import java.awt.event.MouseEvent; import java.lang.invoke.MethodHandles; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import javax.swing.*; @@ -827,7 +828,14 @@ public class DebuggerObjectsProvider extends ComponentProviderAdapter implements if (isLocalOnly()) { return clazz.isInstance(object); } - TargetObject result = DebugModelConventions.findSuitable(clazz, object).getNow(null); + TargetObject result = null; + try { + result = + DebugModelConventions.findSuitable(clazz, object).get(100, TimeUnit.MILLISECONDS); + } + catch (Exception e) { + // IGNORE + } return result != null; } @@ -1585,8 +1593,14 @@ public class DebuggerObjectsProvider extends ComponentProviderAdapter implements } return false; } - TargetObject result = - DebugModelConventions.findSuitable(TargetExecutionStateful.class, object).getNow(null); + TargetObject result = null; + try { + result = DebugModelConventions.findSuitable(TargetExecutionStateful.class, object) + .get(100, TimeUnit.MILLISECONDS); + } + catch (Exception e) { + // IGNORE + } if (result != null) { TargetExecutionStateful stateful = (TargetExecutionStateful) result; TargetExecutionState executionState = stateful.getExecutionState();