go-delve/delve · info

checkpoint not found

Error message

checkpoint not found

What it means

ClearCheckpoint on the core-file process (pkg/proc/core/core.go:274) always returns errors.New("checkpoint not found") because no checkpoints can exist in a static core dump. Checkpoint returns -1/ErrContinueCore and Checkpoints returns nil for the same reason. The literal error is the only way to satisfy the interface's error contract.

Source

Thrown at pkg/proc/core/core.go:274

}

// ChangeDirection will only return an error as you cannot continue a core process.
func (p *process) ChangeDirection(proc.Direction) error { return ErrContinueCore }

// GetDirection will always return forward.
func (p *process) GetDirection() proc.Direction { return proc.Forward }

// When does not apply to core files, it is to support the Mozilla 'rr' backend.
func (p *process) When() (string, error) { return "", nil }

// Checkpoint for core files returns an error, there is no execution of a core file.
func (p *process) Checkpoint(string) (int, error) { return -1, ErrContinueCore }

// Checkpoints returns nil on core files, you cannot set checkpoints when debugging core files.
func (p *process) Checkpoints() ([]proc.Checkpoint, error) { return nil, nil }

// ClearCheckpoint clears a checkpoint, but will only return an error for core files.
func (p *process) ClearCheckpoint(int) error { return errors.New("checkpoint not found") }

func (p *process) SupportsBPF() bool {
	return false
}

func (p *process) SetUProbe(fnName string, goidOffset int64, args []ebpf.UProbeArgMap) error {
	panic("not implemented")
}

// StartCallInjection notifies the backend that we are about to inject a function call.
func (p *process) StartCallInjection() (func(), error) { return func() {}, nil }

func (p *process) EnableURetProbes() error {
	panic("not implemented")
}

func (p *process) DisableURetProbes() error {
	panic("not implemented")

View on GitHub (pinned to a23773e6c3)

Solutions

  1. Skip checkpoint operations entirely in core-file sessions; they are unsupported by design.
  2. Gate checkpoint cleanup code on the backend/recorded state of the target.
  3. Use checkpoints only with live or recorded (rr) debug targets.
  4. Treat the 'checkpoint not found' response as a no-op signal in mixed-session automation.

Example fix

// before
for _, id := range ids { dbg.ClearCheckpoint(id) } // errors on cores

// after
if !isCoreDump(target) {
    for _, id := range ids { dbg.ClearCheckpoint(id) }
}
Defensive patterns

Strategy: validation

Validate before calling

if isCoreTarget(tg) { return nil } // nothing to clear in core sessions

Type guard

func checkpointsSupported(tg *proc.TargetGroup) bool { return !isCoreTarget(tg) }

Try / catch

err := dbg.ClearCheckpoint(id)
if err != nil && strings.Contains(err.Error(), "checkpoint not found") && isCoreTarget(tg) {
    return nil // expected: cores have no checkpoints
}

Prevention

When it happens

Trigger: Calling ClearCheckpoint(id) — via 'checkpoint -d <id>' or rpc2 ClearCheckpoint — while debugging a core file opened with OpenCore.

Common situations: Scripts that clear all checkpoints after analysis run against both live and core sessions; users attempting checkpoint management at a 'dlv core' prompt; loop that iterates checkpoint IDs captured from a previous live session.

Related errors


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