Skip to content

Panic when rendering large "count by" result as SUP #6614

@philrz

Description

@philrz
$ super -s -dynamic -c "count() by commit" repro.bsup.gz > /dev/null
panic: bad uvarint: 0

goroutine 1 [running]:
github.com/brimdata/super/scode.(*Iter).Next(0xda86ad0?)
	/Users/phil/work/super/scode/iter.go:26 +0x219
github.com/brimdata/super.Value.ContainerLength({{0xda86ad0?, 0xc0005c43a8?}, 0xc001ceafb0?, 0xc000fa6fc0?})
	/Users/phil/work/super/value.go:245 +0xd8
github.com/brimdata/super/sup.(*Formatter).formatVector(0xc00042c6c0, 0x0, {0xd5ffb74?, 0x8?}, {0xd5fa198, 0x1}, {0xda86b20, 0xc000000d50}, {{0xda86ad0, 0xc0005c43a8}, ...}, ...)
	/Users/phil/work/super/sup/formatter.go:417 +0x1a5
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc00042c6c0, 0x0, {0xda86ad0, 0xc0005c43a8}, {0xc001ceafb0, 0x6c, 0xcb}, 0x0, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:158 +0x609
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc00042c6c0, 0xda869e0?, 0xec6ba20?, {0xc001ceaf67?, 0x18?, 0xc000fa7270?}, 0x0, 0x0)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc00042c6c0, 0x0, {0xda86b20, 0xc000000db0}, {0xc001ceaf67, 0xc8, 0x114}, 0x0, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc00042c6c0, 0xda869e0?, 0xec6ba20?, {0xc001ceaf35?, 0x4?, 0xc000fa7438?}, 0x0, 0x0)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc00042c6c0, 0x0, {0xda86b20, 0xc0001bc7e0}, {0xc001ceaf35, 0x108, 0x146}, 0x0, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc00042c6c0, 0x0?, 0xc0001bc8a0?, {0xc001ceaf02?, 0x177?, 0x179?}, 0x0, 0x0)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc00042c6c0, 0x0, {0xda86b20, 0xc0001bc8a0}, {0xc001ceaf02, 0x177, 0x179}, 0x0, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc00042c6c0, 0x0?, 0xc01d108ae0?, {0xc001ceaf00?, 0x17b?, 0x17b?}, 0x0, 0x0)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc00042c6c0, 0x0, {0xda86b20, 0xc01d108ae0}, {0xc001ceaf00, 0x17b, 0x17b}, 0x0, 0x0, 0x0)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatValueAndDecorate(0xc00042c6c0, {0xda86b20, 0xc01d108ae0?}, {0xc001ceaf00, 0x17b, 0x17b})
	/Users/phil/work/super/sup/formatter.go:134 +0x197
github.com/brimdata/super/sup.(*Formatter).Format(0xc00042c6c0, {{0xda86b20?, 0xc01d108ae0?}, 0xc001ceaf00?, 0xc000fa7c10?})
	/Users/phil/work/super/sup/formatter.go:99 +0x92
github.com/brimdata/super/sup.(*Formatter).FormatValue(...)
	/Users/phil/work/super/sup/formatter.go:76
github.com/brimdata/super/sio/supio.(*Writer).Write(0xc00050ef30, {{0xda86b20?, 0xc01d108ae0?}, 0xc001ceaf00?, 0xc000fa79d0?})
	/Users/phil/work/super/sio/supio/writer.go:34 +0x8c
github.com/brimdata/super/sbuf.WriteBatch({0x570da3a0, 0xc00050ef30}, {0xda91ba0?, 0xc00e9589a0?})
	/Users/phil/work/super/sbuf/batch.go:39 +0x83
github.com/brimdata/super/sbuf.CopyMux(0xc000fa7d10, {0xda7e1a0, 0xc0003ab470})
	/Users/phil/work/super/sbuf/mux.go:49 +0x106
github.com/brimdata/super/cmd/super/root.(*Command).Run(0xc0003866c8, {0xc00003e2f0, 0x1, 0x1})
	/Users/phil/work/super/cmd/super/root/command.go:108 +0x9e7
github.com/brimdata/super/pkg/charm.path.run({0xc00007ea70, 0x1, 0x1}, {0xc00003e2f0, 0x1, 0x0?})
	/Users/phil/work/super/pkg/charm/path.go:11 +0x7b
github.com/brimdata/super/pkg/charm.(*Spec).Exec(0xec302c0, {0xc00003e2b0, 0x5, 0x5})
	/Users/phil/work/super/pkg/charm/charm.go:74 +0x1fa
main.main()
	/Users/phil/work/super/cmd/super/main.go:39 +0x5b

Details

Repro is with super version 0b7c3b9.

It seems I need a fairly large amount of input data to trigger the problem and it's too much to attach in a GitHub Issue, but it can be downloaded from https://super-issues.s3.us-east-2.amazonaws.com/super-6614/repro.bsup.gz.

Sometimes on repeated repros, instead of the bad uvarint panic shown above, I can get a slice bounds out instead.

$ super -version
Version: v0.1.0-14-g0b7c3b979

$ super -s -dynamic -c "count() by commit" repro.bsup.gz > /dev/null
panic: runtime error: slice bounds out of range [:50] with capacity 24

goroutine 1 [running]:
github.com/brimdata/super/scode.(*Iter).Next(0x746cad0?)
	/Users/phil/work/super/scode/iter.go:33 +0x1b9
github.com/brimdata/super.Value.ContainerLength({{0x746cad0?, 0xc000597638?}, 0xc002d2165a?, 0xc000f31190?})
	/Users/phil/work/super/value.go:245 +0xd8
github.com/brimdata/super/sup.(*Formatter).formatVector(0xc000166870, 0x0, {0x6fe5b74?, 0x8651a20?}, {0x6fe0198, 0x1}, {0x746cb20, 0xc0003ab740}, {{0x746cad0, 0xc000597638}, ...}, ...)
	/Users/phil/work/super/sup/formatter.go:417 +0x1a5
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc000166870, 0x0, {0x746cad0, 0xc000597638}, {0xc002d2165a, 0x18, 0x9d}, 0x0, 0x1, 0x1)
	/Users/phil/work/super/sup/formatter.go:158 +0x609
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc000166870, 0x746c9e0?, 0x8651a20?, {0xc002d2163f?, 0xd?, 0xc000f31438?}, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc000166870, 0x0, {0x746cb20, 0xc0003ab7a0}, {0xc002d2163f, 0x7a, 0xb8}, 0x0, 0x1, 0x1)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc000166870, 0x0?, 0xc0003ab800?, {0xc002d21602?, 0xf3?, 0xf5?}, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc000166870, 0x0, {0x746cb20, 0xc0003ab800}, {0xc002d21602, 0xf3, 0xf5}, 0x0, 0x1, 0x1)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatRecord(0xc000166870, 0x0?, 0xc00ceaf7a0?, {0xc002d21600?, 0xf7?, 0xf7?}, 0x0, 0x1)
	/Users/phil/work/super/sup/formatter.go:408 +0x2d3
github.com/brimdata/super/sup.(*Formatter).formatValue(0xc000166870, 0x0, {0x746cb20, 0xc00ceaf7a0}, {0xc002d21600, 0xf7, 0xf7}, 0x0, 0x1, 0x0)
	/Users/phil/work/super/sup/formatter.go:156 +0x2a5
github.com/brimdata/super/sup.(*Formatter).formatValueAndDecorate(0xc000166870, {0x746cb20, 0xc00ceaf7a0?}, {0xc002d21600, 0xf7, 0xf7})
	/Users/phil/work/super/sup/formatter.go:134 +0x197
github.com/brimdata/super/sup.(*Formatter).Format(0xc000166870, {{0x746cb20?, 0xc00ceaf7a0?}, 0xc002d21600?, 0xc000f31c10?})
	/Users/phil/work/super/sup/formatter.go:99 +0x92
github.com/brimdata/super/sup.(*Formatter).FormatValue(...)
	/Users/phil/work/super/sup/formatter.go:76
github.com/brimdata/super/sio/supio.(*Writer).Write(0xc000369038, {{0x746cb20?, 0xc00ceaf7a0?}, 0xc002d21600?, 0xc000f319d0?})
	/Users/phil/work/super/sio/supio/writer.go:34 +0x8c
github.com/brimdata/super/sbuf.WriteBatch({0x50797ea8, 0xc000369038}, {0x7477ba0?, 0xc003f5ec20?})
	/Users/phil/work/super/sbuf/batch.go:39 +0x83
github.com/brimdata/super/sbuf.CopyMux(0xc000f31d10, {0x74641a0, 0xc0003e7da0})
	/Users/phil/work/super/sbuf/mux.go:49 +0x106
github.com/brimdata/super/cmd/super/root.(*Command).Run(0xc000422488, {0xc00003e2f0, 0x1, 0x1})
	/Users/phil/work/super/cmd/super/root/command.go:108 +0x9e7
github.com/brimdata/super/pkg/charm.path.run({0xc00042a1a8, 0x1, 0x1}, {0xc00003e2f0, 0x1, 0x0?})
	/Users/phil/work/super/pkg/charm/path.go:11 +0x7b
github.com/brimdata/super/pkg/charm.(*Spec).Exec(0x86162c0, {0xc00003e2b0, 0x5, 0x5})
	/Users/phil/work/super/pkg/charm/charm.go:74 +0x1fa
main.main()
	/Users/phil/work/super/cmd/super/main.go:39 +0x5b

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions