NationalSecurityAgency/ghidra · error · RuntimeError

Usage: ghidra trace sync-disable

Error message

Usage: ghidra trace sync-disable

What it means

Raised by ghidra_trace_sync_disable when any argument is supplied. sync-disable stops synchronizing the current process (the inverse of sync-enable) but leaves hooks installed; it is parameterless (commands.py:2047).

Source

Thrown at Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py:2047

    hooks.install_hooks()
    hooks.enable_current_process()


@convert_errors
def ghidra_trace_sync_disable(debugger: lldb.SBDebugger, command: str,
                              result: lldb.SBCommandReturnObject,
                              internal_dict: Dict[str, Any]) -> None:
    """Cease synchronizing the current process with the Ghidra trace.

    Usage: ghidra trace sync-disable

    This is the opposite of 'ghidra trace sync-enable', except it will not
    automatically remove hooks.
    """

    args = shlex.split(command)
    if len(args) != 0:
        raise RuntimeError("Usage: ghidra trace sync-disable")

    hooks.disable_current_process()


@convert_errors
def ghidra_trace_sync_synth_stopped(debugger: lldb.SBDebugger, command: str,
                                    result: lldb.SBCommandReturnObject,
                                    internal_dict: Dict[str, Any]) -> None:
    """Act as though the target has just stopped.

    This may need to be invoked immediately after 'ghidra trace sync-
    enable', to ensure the first snapshot displays the initial/current
    target state.
    """

    hooks.on_stop(None)  # Pass a fake event

View on GitHub (pinned to d5f144c24d)

Solutions

  1. Run bare: `ghidra trace sync-disable`.
  2. Select each process and repeat to disable sync per process; hooks remain installed (use remove-hooks to tear them down).

Example fix

// before
ghidra trace sync-disable all
// after
ghidra trace sync-disable
Defensive patterns

Strategy: validation

Validate before calling

assert len(command.split()) == 0, "sync-disable takes no arguments"

Prevention

When it happens

Trigger: Appending a process id or `all` like `ghidra trace sync-disable 0`, or trailing text.

Common situations: Users expect to disable sync globally or for a non-current process; the command affects only the current process. They then notice other processes still sync.

Related errors


AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14). Data as JSON: /api/errors/ffb62f27190a32f3. Report an issue: GitHub.