go-delve/delve · error

could not open executable: %v

Error message

could not open executable: %v

What it means

Error "could not open executable: %v" thrown in go-delve/delve.

Source

Thrown at pkg/proc/linutil/dynamic.go:180

	return readPtr(p, debugAddr+rBrkOffset)
}

// ElfFindRBrkFromInterp finds the address of the dynamic linker's
// _dl_debug_state function by reading the ELF interpreter from disk.
// This is used at launch time when the dynamic linker hasn't initialized
// r_debug yet (DT_DEBUG is 0). The function reads the .interp section of
// the executable to find the interpreter path, then finds _dl_debug_state
// in the interpreter's dynamic symbol table.
// execPath is the path to the executable, and auxvBase is the base address
// of the interpreter in memory (AT_BASE from the auxiliary vector).
func ElfFindRBrkFromInterp(execPath string, auxvBase uint64) (uint64, error) {
	if auxvBase == 0 {
		return 0, nil
	}

	execFile, err := elf.Open(execPath)
	if err != nil {
		return 0, fmt.Errorf("could not open executable: %v", err)
	}
	defer execFile.Close()

	interpSec := execFile.Section(".interp")
	if interpSec == nil {
		return 0, nil
	}
	interpData, err := interpSec.Data()
	if err != nil {
		return 0, fmt.Errorf("could not read .interp section: %v", err)
	}
	interpPath := string(bytes.TrimRight(interpData, "\x00"))

	interpFile, err := elf.Open(interpPath)
	if err != nil {
		realPath, rerr := os.Readlink(interpPath)
		if rerr != nil {
			return 0, fmt.Errorf("could not open interpreter %s: %v", interpPath, err)

View on GitHub (pinned to a23773e6c3)

When it happens

Trigger: Thrown at pkg/proc/linutil/dynamic.go:180 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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