go-delve/delve · error
size must be a positive integer (<=8)
Error message
size must be a positive integer (<=8)
What it means
The `-size` flag controls byte width per memory chunk and must be an integer between 1 and 8 inclusive, since Delve reads machine-word-sized chunks. Any non-numeric value, a value <= 0, or a value > 8 produces this error.
Source
Thrown at service/api/command.go:254
case "-count", "-len":
arg := nextArg()
if arg == "" {
return nil, errors.New("expected argument after -count/-len")
}
var err error
out.Count, err = strconv.ParseInt(arg, 0, 64)
if err != nil || out.Count <= 0 {
return nil, errors.New("count/len must be a positive integer")
}
case "-size":
arg := nextArg()
if arg == "" {
return nil, errors.New("expected argument after -size")
}
var err error
out.Size, err = strconv.ParseInt(arg, 0, 64)
if err != nil || out.Size <= 0 || out.Size > 8 {
return nil, errors.New("size must be a positive integer (<=8)")
}
case "-x":
out.IsExpr = true
// remaining args are going to be interpreted as expression
out.Operand = strings.Join(args, " ")
break loop
default:
if len(args) > 0 {
return nil, fmt.Errorf("unknown option %q", args[0])
}
out.Operand = cmd
break loop // only one arg left to be evaluated as a uint
}
}
if len(out.Operand) == 0 {
return nil, errors.New("no address specified")
}View on GitHub (pinned to a23773e6c3)
Solutions
- Use a -size value between 1 and 8 (typically 1, 2, 4, or 8)
- Express large reads via a bigger -count instead of a bigger -size
- Clamp client-side to min(max(size,1),8) before sending
Example fix
// before "x -count 4 -size 16 0xc000010000" // after "x -count 16 -size 1 0xc000010000"
Defensive patterns
Strategy: validation
Validate before calling
func clampSize(n int64) int64 {
if n < 1 { return 1 }
if n > 8 { return 8 }
return n
} Prevention
- Clamp size into [1,8] before sending
- Convert large byte-size reads into larger counts
- Document that -size is per-chunk width, not total
When it happens
Trigger: `examineMemory` with `-size 0`, `-size 16`, `-size abc`, or any value outside 1..8; also when a client computes size from a type's byte size larger than 8 (e.g. a 16-byte struct).
Common situations: Reading wider types (int128, structs, big floats) and passing their full byte size; confusing -size (per-chunk bytes, max 8) with total byte count; IDE form fields unconstrained up to 64.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- no address specified
- count/len must be a positive integer
- expected argument after -size
- too many arguments
- bad arguments: %w
AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31).
Data as JSON: /api/errors/72cf686e272592a7.
Report an issue: GitHub.