diff --git a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgDebugEventCallbacksAdapter.java b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgDebugEventCallbacksAdapter.java index e26199ee9b..4bcb83f365 100644 --- a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgDebugEventCallbacksAdapter.java +++ b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/impl/DbgDebugEventCallbacksAdapter.java @@ -100,7 +100,11 @@ public class DbgDebugEventCallbacksAdapter extends DebugEventCallbacksAdapter { if (DebugStatus.isInsideWait(argument)) { return DebugStatus.NO_CHANGE; } - Msg.info(this, "***ExecutionStatus: " + DebugStatus.fromArgument(argument)); + DebugStatus status = DebugStatus.fromArgument(argument); + Msg.info(this, "***ExecutionStatus: " + status); + if (status.equals(DebugStatus.NO_DEBUGGEE)) { + event.setState(DbgState.EXIT); + } return manager.processEvent(event); } if (flags.contains(ChangeEngineState.BREAKPOINTS)) { diff --git a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/impl/DbgModelTargetProcessImpl.java b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/impl/DbgModelTargetProcessImpl.java index f6b4ad33c4..3a93df84e0 100644 --- a/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/impl/DbgModelTargetProcessImpl.java +++ b/Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/impl/DbgModelTargetProcessImpl.java @@ -196,6 +196,13 @@ public class DbgModelTargetProcessImpl extends DbgModelTargetObjectImpl setExecutionState(TargetExecutionState.TERMINATED, "Exited"); } + @Override + public void onExit() { + super.onExit(); + DbgModelTargetProcessContainer processes = (DbgModelTargetProcessContainer) getImplParent(); + processes.processRemoved(process.getId(), DbgCause.Causes.UNCLAIMED); + } + @Override public CompletableFuture select() { DbgManagerImpl manager = getManager();