Skip to content

NPE with Iterator.SeekGE on stacked range keys via NewExternalIter #1760

@erikgrinaker

Description

@erikgrinaker

Consider the following sequence, which builds an in-memory SST and then attempts to iterate over it via NewExternalIter():

sst_put_rangekey k=a end=c ts=2
sst_put_rangekey k=a end=c ts=1
sst_finish
sst_iter_new
iter_seek_ge k=a

This panics with:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xfcd9e5]

goroutine 1762 [running]:
testing.tRunner.func1.2({0x18daba0, 0x2bf46b0})
	GOROOT/src/testing/testing.go:1209 +0x24e
testing.tRunner.func1()
	GOROOT/src/testing/testing.go:1212 +0x218
panic({0x18daba0, 0x2bf46b0})
	GOROOT/src/runtime/panic.go:1038 +0x215
github.com/cockroachdb/datadriven.runDirective.func1.1()
	github.com/cockroachdb/datadriven/external/com_github_cockroachdb_datadriven/datadriven.go:318 +0xdb
panic({0x18daba0, 0x2bf46b0})
	GOROOT/src/runtime/panic.go:1038 +0x215
github.com/cockroachdb/pebble.bySuffix.Less(...)
	github.com/cockroachdb/pebble/external/com_github_cockroachdb_pebble/iterator.go:287
sort.insertionSort({0x1eddc50, 0xc0007cdc60}, 0x0, 0x2)
	GOROOT/src/sort/sort.go:40 +0xb1
sort.quickSort({0x1eddc50, 0xc0007cdc60}, 0xc0007cdc60, 0x19e03a0, 0xc0006d2158)
	GOROOT/src/sort/sort.go:222 +0x171
sort.Sort({0x1eddc50, 0xc0007cdc60})
	GOROOT/src/sort/sort.go:231 +0x53
github.com/cockroachdb/pebble.(*Iterator).saveRangeKey(0xc0009de500)
	github.com/cockroachdb/pebble/external/com_github_cockroachdb_pebble/iterator.go:1640 +0x7bb
github.com/cockroachdb/pebble.(*Iterator).findNextEntry(0xc0009de500, {0x0, 0x0, 0x0})
	github.com/cockroachdb/pebble/external/com_github_cockroachdb_pebble/iterator.go:412 +0x60a
github.com/cockroachdb/pebble.(*Iterator).SeekGEWithLimit(0xc0009de500, {0xc000f606a0, 0x2, 0x1c}, {0x0, 0x0, 0x0})
	github.com/cockroachdb/pebble/external/com_github_cockroachdb_pebble/iterator.go:1014 +0x549
github.com/cockroachdb/pebble.(*Iterator).SeekGE(...)
	github.com/cockroachdb/pebble/external/com_github_cockroachdb_pebble/iterator.go:936
...

Metadata

Metadata

Assignees

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