From 33958e386da22c435f664deab2ecf4c4b647361d Mon Sep 17 00:00:00 2001 From: d-millar <33498836+d-millar@users.noreply.github.com> Date: Wed, 22 Mar 2023 19:05:33 -0400 Subject: [PATCH] GP-0: fix for broken attach logic (from 3142) --- .../agent/dbgeng/manager/impl/DbgManagerImpl.java | 12 ++++++++---- .../agent/dbgeng/manager/impl/DbgProcessImpl.java | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgManagerImpl.java b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgManagerImpl.java index 3ad65fa0af..57c21dff3a 100644 --- a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgManagerImpl.java +++ b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgManagerImpl.java @@ -1595,8 +1595,10 @@ public class DbgManagerImpl implements DbgManager { } public CompletableFuture setActiveThread(DbgThread thread) { - if (thread == null || thread.getTid().equals(currentThread.getTid())) { - return CompletableFuture.completedFuture(null); + if (currentThread != null) { + if (thread == null || thread.getTid().equals(currentThread.getTid())) { + return CompletableFuture.completedFuture(null); + } } currentThread = thread; currentProcess = thread.getProcess(); @@ -1604,8 +1606,10 @@ public class DbgManagerImpl implements DbgManager { } public CompletableFuture setActiveProcess(DbgProcess process) { - if (process == null || process.getPid().equals(currentProcess.getPid())) { - return CompletableFuture.completedFuture(null); + if (currentProcess != null) { + if (process == null || process.getPid().equals(currentProcess.getPid())) { + return CompletableFuture.completedFuture(null); + } } currentProcess = process; return execute(new DbgSetActiveProcessCommand(this, process)); diff --git a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgProcessImpl.java b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgProcessImpl.java index b3b9efcc60..68baa88578 100644 --- a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgProcessImpl.java +++ b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgProcessImpl.java @@ -262,6 +262,7 @@ public class DbgProcessImpl implements DbgProcess { return sequence(TypeSpec.cls(DbgThread.class).set()).then((seq) -> { setActive().handle(seq::next); }).then((seq) -> { + id = new DebugProcessRecord(toPid); pid = toPid; // TODO: Wait for successful completion? manager.execute( new DbgAttachCommand(manager, this, BitmaskSet.of(DebugAttachFlags.DEFAULT)))