Skip to content

(CRASH) runtime error: makeslice: len out of range when using invalid range in object comprehension #826

@puremourning

Description

@puremourning

Steps to repro:

ben@BeniMac2020 jsonnet % cat repro.jsonnet
local list = ['a'];
{
  ['%s' % idx]: list[idx]
  for idx in std.range(2, std.length(list) -1)
}

Run : jsonnet repro.jsonnet

ben@BeniMac2020 jsonnet % jsonnet repro.jsonnet
INTERNAL ERROR: (CRASH) runtime error: makeslice: len out of range
goroutine 1 [running]:
runtime/debug.Stack()
	runtime/debug/stack.go:26 +0x5e
github.com/google/go-jsonnet.(*VM).Evaluate.func1()
	github.com/google/go-jsonnet/vm.go:187 +0x3d
panic({0x18823a0?, 0x18b20a0?})
	runtime/panic.go:792 +0x132
github.com/google/go-jsonnet.builtinRange(0xc000032b00, {0x18b3120?, 0xc000010f80?}, {0x18b3120, 0xc000010fa8})
	github.com/google/go-jsonnet/builtins.go:718 +0x86
github.com/google/go-jsonnet.(*binaryBuiltin).evalCall(0xc000114f60, {{0xc000027c20, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0xc000032b00)
	github.com/google/go-jsonnet/builtins.go:2625 +0x20e
github.com/google/go-jsonnet.(*valueFunction).call(0xc000027330, 0xc000032b00, {{0xc000027c20, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0})
	github.com/google/go-jsonnet/value.go:349 +0x122
github.com/google/go-jsonnet.(*interpreter).evaluateTailCall(0x18b4728?, 0xc00017e100?, {{0xc000027c20, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:1037 +0x9d
github.com/google/go-jsonnet.(*interpreter).rawevaluate(0xc000032b00, {0x18b4728, 0xc00017e100}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:621 +0x3be5
github.com/google/go-jsonnet.(*interpreter).evaluate(0xc000032b00, {0x18b4728, 0xc00017e100}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:312 +0x4e
github.com/google/go-jsonnet.(*interpreter).EvalInCleanEnv(0xc000032b00, 0xc0001b6368?, {0x18b4728, 0xc00017e100}, 0x0?)
	github.com/google/go-jsonnet/interpreter.go:1019 +0x5f
github.com/google/go-jsonnet.(*cachedThunk).getValue(0xc00011a940, 0x2?)
	github.com/google/go-jsonnet/thunks.go:74 +0x45
github.com/google/go-jsonnet.(*binaryBuiltin).evalCall(0xc000115ce0, {{0xc000027bf0, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0xc000032b00)
	github.com/google/go-jsonnet/builtins.go:2620 +0x1d3
github.com/google/go-jsonnet.(*valueFunction).call(0xc000027490, 0xc000032b00, {{0xc000027bf0, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0})
	github.com/google/go-jsonnet/value.go:349 +0x122
github.com/google/go-jsonnet.(*interpreter).evaluateTailCall(0x18b4728?, 0xc00017e300?, {{0xc000027bf0, 0x2, 0x2}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:1037 +0x9d
github.com/google/go-jsonnet.(*interpreter).rawevaluate(0xc000032b00, {0x18b4728, 0xc00017e300}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:621 +0x3be5
github.com/google/go-jsonnet.(*interpreter).evaluate(0xc000032b00, {0x18b4728, 0xc00017e300}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:312 +0x4e
github.com/google/go-jsonnet.(*interpreter).EvalInCleanEnv(0xc000032b00, 0xc0001b6bb0?, {0x18b4728, 0xc00017e300}, 0x0?)
	github.com/google/go-jsonnet/interpreter.go:1019 +0x5f
github.com/google/go-jsonnet.(*cachedThunk).getValue(0xc00011a680, 0x1?)
	github.com/google/go-jsonnet/thunks.go:74 +0x45
github.com/google/go-jsonnet.(*unaryBuiltin).evalCall(0xc000115cb0, {{0xc0000660d8, 0x1, 0x1}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0xc000032b00)
	github.com/google/go-jsonnet/builtins.go:2580 +0x15a
github.com/google/go-jsonnet.(*valueFunction).call(0xc0000279d0, 0xc000032b00, {{0xc0000660d8, 0x1, 0x1}, {0x1c160c0, 0x0, 0x0}, 0x0})
	github.com/google/go-jsonnet/value.go:349 +0x122
github.com/google/go-jsonnet.(*interpreter).evaluateTailCall(0x18b4728?, 0xc00017e400?, {{0xc0000660d8, 0x1, 0x1}, {0x1c160c0, 0x0, 0x0}, 0x0}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:1037 +0x9d
github.com/google/go-jsonnet.(*interpreter).rawevaluate(0xc000032b00, {0x18b4728, 0xc00017e400}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:621 +0x3be5
github.com/google/go-jsonnet.(*interpreter).evaluate(0xc000032b00, {0x18b4728, 0xc00017e400}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:312 +0x4e
github.com/google/go-jsonnet.(*interpreter).rawevaluate(0xc000032b00, {0x18b4578, 0xc000112a00}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:555 +0x37c5
github.com/google/go-jsonnet.(*interpreter).evaluate(0xc000032b00, {0x18b4578, 0xc000112a00}, 0x1)
	github.com/google/go-jsonnet/interpreter.go:312 +0x4e
github.com/google/go-jsonnet.(*interpreter).EvalInCleanEnv(0xc000032b00, 0xd?, {0x18b4578, 0xc000112a00}, 0xb0?)
	github.com/google/go-jsonnet/interpreter.go:1019 +0x5f
github.com/google/go-jsonnet.evaluateAux(0xc000032b00, {0x18b4578, 0xc000112a00}, 0xc000115d70)
	github.com/google/go-jsonnet/interpreter.go:1327 +0x147
github.com/google/go-jsonnet.evaluate({0x18b4578, 0xc000112a00}, 0xc0001b7d68?, 0xc000115d70, 0x1885780?, 0xc000115ec0?, 0x7ff7bf8d2410?, {0x18b29c8?, 0xc000066038?}, 0x0, ...)
	github.com/google/go-jsonnet/interpreter.go:1362 +0x91
github.com/google/go-jsonnet.(*VM).Evaluate(0xc000115f20?, {0x18b4578?, 0xc000112a00?})
	github.com/google/go-jsonnet/vm.go:190 +0xba
github.com/google/go-jsonnet.(*VM).EvaluateFile(0xc00015c230, {0x7ff7bf8d2410?, 0xc000115c50?})
	github.com/google/go-jsonnet/vm.go:419 +0xb4
main.main()
	github.com/google/go-jsonnet/cmd/jsonnet/cmd.go:457 +0x6c5

Please report a bug here: https://github.com/google/go-jsonnet/issues

version:

ben@BeniMac2020 jsonnet % jsonnet -v
Jsonnet commandline interpreter (Go implementation) v0.21.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions