go-delve/delve · error

too many arguments to restart

Error message

too many arguments to restart

What it means

When restarting a recorded (RR) target, 'restart' accepts at most one positional argument: the checkpoint ID to restart from. restartRecorded returns this error when more than one positional argument is supplied. Extra arguments beyond the checkpoint ID are not meaningful for a recorded restart.

Source

Thrown at pkg/terminal/command.go:1215

	rerecord := false
	resetArgs := false
	newArgv := []string{}
	newRedirects := [3]string{}
	restartPos := ""

	if len(v) > 0 {
		if v[0] == "-r" {
			rerecord = true
			if len(v) == 2 {
				var err error
				resetArgs, newArgv, newRedirects, err = parseNewArgv(v[1])
				if err != nil {
					return err
				}
			}
		} else {
			if len(v) > 1 {
				return errors.New("too many arguments to restart")
			}
			restartPos = v[0]
		}
	}

	if err := restartIntl(t, rerecord, restartPos, resetArgs, newArgv, newRedirects); err != nil {
		return err
	}

	state, err := t.client.GetState()
	if err != nil {
		return err
	}
	printcontext(t, state)
	printPos(t, state.CurrentThread, printPosShowArrow)
	t.onStop()
	return nil
}

View on GitHub (pinned to a23773e6c3)

Solutions

  1. Pass at most one checkpoint ID: 'restart <checkpoint-id>'
  2. Use 'checkpoints' to list valid checkpoint IDs
  3. To change program arguments use the new argv syntax (e.g. 'restart -noargs <args...>') rather than positional extras

Example fix

// before
restart c1 verbose
// after
restart c1
Defensive patterns

Strategy: validation

Validate before calling

if len(positionalArgs) > 1 {
	return errors.New("restart accepts at most one checkpoint ID")
}

Try / catch

if err := restart(...); strings.Contains(err.Error(), "too many arguments to restart") { /* drop extras and retry with single checkpoint id */ }

Prevention

When it happens

Trigger: Running 'restart c1 c2' or 'restart somearg extra' while debugging under rr recording: restart parses flags, then the else-branch sees len(v) > 1 positional args and returns the error (pkg/terminal/command.go:1215).

Common situations: Passing both a checkpoint ID and program arguments (program arguments require -noargs / new argv syntax instead); scripting restart with extra tokens; confusing recorded-mode restart with live-mode restart argument handling.

Related errors


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