go-delve/delve · error
emulation exception
Error message
emulation exception
What it means
machTargetExcToError maps Mach exception 0x94 (EXC_EMULATION) to 'emulation exception', meaning an instruction required emulator assistance that failed (equivalent of SIGEMUL).
Source
Thrown at pkg/proc/gdbserial/gdbserver.go:2231
copy(savedRegs.loaded, regs.loaded)
return savedRegs, nil
}
func registerName(arch *proc.Arch, regNum uint64) string {
regName, _, _ := arch.DwarfRegisterToString(int(regNum), nil)
return strings.ToLower(regName)
}
func machTargetExcToError(sig uint8) error {
switch sig {
case 0x91:
return errors.New("bad access")
case 0x92:
return errors.New("bad instruction")
case 0x93:
return errors.New("arithmetic exception")
case 0x94:
return errors.New("emulation exception")
case 0x95:
return errors.New("software exception")
case 0x96:
return errors.New("breakpoint exception")
}
return nil
}
func checkRosettaExpensive() error {
if runtime.GOOS != "darwin" {
return nil
}
if runtime.GOARCH != "arm64" {
return nil
}
// Additionally check the output of 'uname -m' if it's x86_64 it means that
// the shell we are running on is being emulated by Rosetta even though ourView on GitHub (pinned to a23773e6c3)
Solutions
- Check whether you're running under Rosetta or another translation layer and test a native build.
- Disassemble at PC to identify the faulting instruction.
- Rebuild/upgrade dependencies that may emit obsolete instructions.
- If persistent, report to delve/Apple with the wire log and disassembly.
Defensive patterns
Strategy: try-catch
Try / catch
if err != nil && strings.Contains(err.Error(), "emulation exception") {
// check for translation-layer (Rosetta) issues
} Prevention
- Test natively instead of under Rosetta/emulation when this appears.
- Disassemble at PC to find the non-emulatable instruction.
- Upgrade toolchains/binaries that may emit legacy instructions.
When it happens
Trigger: Target triggers an emulation fault on macOS; the stub reports Mach exception 0x94 and delve converts it into this error.
Common situations: Rare; seen with unusual instructions, binary translation layers (Rosetta), or kernels failing to emulate a legacy instruction.
Related errors
- bad access
- bad instruction
- software exception
- breakpoint exception
- could not find watchpoint at address %#x
AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31).
Data as JSON: /api/errors/11b7bd99c0a47083.
Report an issue: GitHub.