{"record":{"id":"1bd4bae6c95b257d","repo":"go-delve/delve","slug":"not-implemented-1bd4ba","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/proc/stack_sigtramp.go","lineNumber":70,"sourceCode":"\t}\n\n\tswitch bi.GOOS {\n\tcase \"windows\":\n\t\tepvar := findvar(\"ep\")\n\t\tif epvar == nil {\n\t\t\treturn nil, errors.New(\"ep variable not found\")\n\t\t}\n\t\tepaddr, err := deref(epvar)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch bi.Arch.Name {\n\t\tcase \"amd64\":\n\t\t\treturn sigtrampContextWindowsAMD64(it.mem, epaddr)\n\t\tcase \"arm64\":\n\t\t\treturn sigtrampContextWindowsARM64(it.mem, epaddr)\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"not implemented\")\n\t\t}\n\tcase \"linux\":\n\t\taddr, err := getctxaddr()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch bi.Arch.Name {\n\t\tcase \"386\":\n\t\t\treturn sigtrampContextLinux386(it.mem, addr)\n\t\tcase \"amd64\":\n\t\t\treturn sigtrampContextLinuxAMD64(it.mem, addr)\n\t\tcase \"arm64\":\n\t\t\treturn sigtrampContextLinuxARM64(it.mem, addr)\n\t\tcase \"loong64\":\n\t\t\treturn sigtrampContextLinuxLOONG64(it.mem, addr)\n\t\tcase \"riscv64\":\n\t\t\treturn sigtrampContextLinuxRISCV64(it.mem, addr)","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/go-delve/delve/blob/a23773e6c31361e43246bc43a424ee009679b174/pkg/proc/stack_sigtramp.go#L52-L88","documentation":"Delve needs to reconstruct the register state saved by the Windows signal trampoline (runtime.sigtrampgo) so it can continue unwinding the stack across a signal handler frame. This reconstruction is only implemented for the windows/amd64 and windows/arm64 combinations; any other architecture hits the switch default in readSigtrampgoContext and returns the bare 'not implemented' error. It is a deliberate feature gap, not a bug in the debugged program.","triggerScenarios":"Debugging a Windows target where the stack iterator crosses a sigtrampgo frame while the binary is built for an architecture other than amd64 or arm64 (e.g. windows/386), during stepping operations such as Next that must unwind through a signal handler.","commonSituations":"Running Delve on a Windows host debugging a Go program built for an unsupported Windows architecture; using an ARM Windows device with an x86 or 386 Go binary; Delve releases from before the desired arch's sigtramp reader was added.","solutions":["Check the debugged binary's GOOS/GOARCH; rebuild it for windows/amd64 or windows/arm64, which are the only supported combinations for signal-frame unwinding on Windows","Upgrade Delve to the latest version in case support for your architecture was added after your build","If the arch cannot be changed, avoid stepping into/unwinding through signal-handling code paths (cgo/panic paths that go through sigtrampgo) and inspect the program state before the signal","File/track an upstream go-delve/delve issue requesting sigtrampgo support for your architecture"],"exampleFix":"// before: debugging a windows/386 binary\nGOOS=windows GOARCH=386 go build -gcflags=\"all=-N -l\" -o app.exe\n// after: rebuild for a supported arch\nGOOS=windows GOARCH=amd64 go build -gcflags=\"all=-N -l\" -o app.exe","handlingStrategy":"fallback","validationCode":"// before starting the debug session, verify a supported Windows arch\nbi := getBinaryInfo(path) // via your tooling\nif bi.GOOS == \"windows\" && bi.Arch != \"amd64\" && bi.Arch != \"arm64\" {\n    return fmt.Errorf(\"sigtramp stepping unsupported on windows/%s; rebuild for amd64 or arm64\", bi.Arch)\n}","typeGuard":"func windowsArchSupported(arch string) bool {\n    return arch == \"amd64\" || arch == \"arm64\"\n}","tryCatchPattern":"// wrap stepping calls\nif err := dlvClient.Next(...); err != nil {\n    if strings.Contains(err.Error(), \"not implemented\") && goos == \"windows\" {\n        // fall back to breakpoint-based stepping instead of stepping through the signal frame\n        return fallbackStepWithBreakpoints()\n    }\n    return err\n}","preventionTips":["Build debug binaries for windows/amd64 or windows/arm64 only","Keep Delve updated to the newest release","Avoid stepping into cgo/signal-handling code paths on unsupported arches","Check `dlv version` and its supported platform matrix before planning debug sessions"],"tags":["debugger","stack-unwinding","windows","unsupported-architecture"],"backgroundTag":"sigtrampgo-context-unimplemented","analyzedSha":"a23773e6c31361e43246bc43a424ee009679b174","analyzedAt":"2026-08-31T15:12:45.221Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}