go-delve/delve · error

unsupported architecture %s

Error message

unsupported architecture %s

What it means

When loading a Windows minidump, Delve reads the processor architecture from the dump's system info stream and only supports AMD64 (x86-64) dumps. If the dump was produced on any other CPU architecture (ARM64, x86/386, etc.), LoadMiniDumpFile rejects it with this error. It exists because the minidump core backend cannot interpret register state or unwind stacks for non-AMD64 processors.

Source

Thrown at pkg/proc/core/minidump/minidump.go:366

	for i := range mdmp.Streams {
		stream := &mdmp.Streams[i]
		if stream.Type != SystemInfoStream {
			continue
		}

		sb := streamBuf(stream, buf, "system info")
		if buf.err != nil {
			return nil, buf.err
		}

		arch := Arch(sb.u16())

		if logfn != nil {
			logfn("Found processor architecture %s", arch.String())
		}

		if arch != CpuArchitectureAMD64 {
			return nil, fmt.Errorf("unsupported architecture %s", arch.String())
		}
	}

	for i := range mdmp.Streams {
		stream := &mdmp.Streams[i]
		if logfn != nil {
			logfn("Stream %d: type:%s off:%#x size:%#x", i, stream.Type, stream.Offset, len(stream.RawData))
		}
		switch stream.Type {
		case ThreadListStream:
			readThreadList(&mdmp, streamBuf(stream, buf, "thread list"))
			if logfn != nil {
				for i := range mdmp.Threads {
					logfn("\tID:%#x TEB:%#x", mdmp.Threads[i].ID, mdmp.Threads[i].TEB)
				}
			}
		case ModuleListStream:
			readModuleList(&mdmp, streamBuf(stream, buf, "module list"))

View on GitHub (pinned to a23773e6c3)

Solutions

  1. Regenerate the minidump from an x86-64 (AMD64) process, or use the dump of the 64-bit process instead of the WOW64 32-bit one.
  2. Verify the dump's architecture with dumpchk/WinDbg and confirm it is x64 before loading.
  3. Check for a newer Delve version that may have added your architecture's minidump support, or extend minidump.go with a new CpuArchitecture case.
  4. If you only need memory contents (not stack unwinding), extract memory ranges with a generic minidump parser instead of Delve.

Example fix

// before: loading an ARM64 dump
core, err := proc.LoadMiniDumpFile("arm64.dmp", logfn, 0) // unsupported architecture arm64

// after: use an AMD64 dump
core, err := proc.LoadMiniDumpFile("amd64.dmp", logfn, 0)
Defensive patterns

Strategy: validation

Validate before calling

func dumpArchIsAMD64(path string) bool {
    md, err := minidump.Open(path)
    if err != nil { return false }
    defer md.Close()
    return md.ProcessorArchitecture == minidump.CpuArchitectureAMD64
}
// check before calling proc.LoadMiniDumpFile

Type guard

func archIsSupported(arch minidump.CpuArchitecture) bool {
    return arch == minidump.CpuArchitectureAMD64
}

Prevention

When it happens

Trigger: Calling proc.LoadMiniDumpFile (directly or via `dlv core <dump>` / service/debugger CoreTarget) on a .dmp file whose SystemInfoStream reports a CpuArchitecture value other than CpuArchitectureAMD64.

Common situations: Analyzing a minidump captured on an ARM64 Windows machine (e.g. Surface Pro X, Snapdragon laptops) or a 32-bit x86 (WOW64) process dump; cross-arch debugging where the dump machine differs from the supported set.

Related errors


AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31). Data as JSON: /api/errors/13680c5b4aa180e0. Report an issue: GitHub.