NationalSecurityAgency/ghidra · error · RuntimeError
No trace active
Error message
No trace active
What it means
Raised as RuntimeError by State.require_trace() when STATE.trace is None — no Trace has been created yet. Trace-touching commands require a prior successful ghidra_trace_start().
Source
Thrown at Ghidra/Debug/Debugger-agent-drgn/src/main/py/src/ghidradrgn/commands.py:118
def __init__(self) -> None:
self.reset_client()
def require_client(self) -> Client:
if self.client is None:
raise RuntimeError("Not connected")
return self.client
def require_no_client(self) -> None:
if self.client != None:
raise RuntimeError("Already connected")
def reset_client(self) -> None:
self.client: Optional[Client] = None
self.reset_trace()
def require_trace(self) -> Trace[Extra]:
if self.trace is None:
raise RuntimeError("No trace active")
return self.trace
def require_no_trace(self) -> None:
if self.trace != None:
raise RuntimeError("Trace already started")
def reset_trace(self) -> None:
self.trace: Optional[Trace[Extra]] = None
util.set_convenience_variable('_ghidra_tracing', "false")
self.reset_tx()
def require_tx(self) -> Tuple[Trace, Transaction]:
trace = self.require_trace()
if self.tx is None:
raise RuntimeError("No transaction")
return trace, self.tx
def require_no_tx(self) -> None:View on GitHub (pinned to d5f144c24d)
Solutions
- Run ghidra_trace_start(name) and confirm trace creation before trace commands.
- Guard: if STATE.trace is None: report 'start trace first'.
- After ghidra_trace_stop(), call ghidra_trace_restart()/start before further trace ops.
Example fix
// before
trace = STATE.require_trace() # RuntimeError: No trace active
// after
if STATE.trace is None:
ghidra_trace_start()
trace = STATE.require_trace() Defensive patterns
Strategy: validation
Validate before calling
if STATE.trace is None:
raise RuntimeError('call ghidra_trace_start first')
trace = STATE.require_trace() Type guard
def has_trace() -> bool:
return getattr(STATE, 'trace', None) is not None Try / catch
try:
trace = STATE.require_trace()
except RuntimeError as e:
if 'No trace active' in str(e):
ghidra_trace_start(); trace = STATE.require_trace()
else:
raise Prevention
- Run ghidra_trace_start() before any trace-touching command.
- After ghidra_trace_stop(), start/restart before further trace ops.
- Confirm start_trace() succeeded (schema loaded) before proceeding.
When it happens
Trigger: Invoking put/activate/save commands (or any trace op) before ghidra_trace_start(); after ghidra_trace_stop() reset the trace.
Common situations: Skipping the start step in a script; start_trace() failed (e.g. schema load error) leaving trace None; operating after stop without restart.
Related errors
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/332c5f8baa8c71be.
Report an issue: GitHub.