Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

leveldb: possible iterator leaks causes assertion failure on index close #45

Open
tmm1 opened this issue Jul 24, 2019 · 1 comment
Open

Comments

@tmm1
Copy link
Contributor

tmm1 commented Jul 24, 2019

I recently upgraded leveldb and forgot to build it with -DNDEBUG, which silences internal assertions.

I've noticed intermittent assertion failures on both Windows and Linux when closing a bleve search index:

indexer: leveldb/db/version_set.cc:776: leveldb::VersionSet::~VersionSet(): Assertion `dummy_versions_.next_ == &dummy_versions_' failed.
SIGABRT: abort
PC=0x1112c9b m=13 sigcode=18446744073709551610

goroutine 0 [idle]:
runtime: unknown pc 0x1112c9b
stack: frame={sp:0x7ffb89ffaa08, fp:0x0} stack=[0x7ffb897fb108,0x7ffb89ffad08)

goroutine 65 [syscall]:
runtime.cgocall(0x106f414, 0xc0038bdc18, 0xc00003e070)
	/home/vagrant/go/src/runtime/cgocall.go:128 +0x5b fp=0xc0038bdbe8 sp=0xc0038bdbb0 pc=0x40560b
github.com/jmhodges/levigo._Cfunc_leveldb_close(0x7ffb9007f950)
	_cgo_gotypes.go:181 +0x41 fp=0xc0038bdc18 sp=0xc0038bdbe8 pc=0xc40211
github.com/jmhodges/levigo.(*DB).Close.func1(0xc0003bfe80)
	/home/vagrant/gopath/pkg/mod/github.com/jmhodges/levigo@v1.0.0/db.go:387 +0x5e fp=0xc0038bdc58 sp=0xc0038bdc18 pc=0xc456de
github.com/jmhodges/levigo.(*DB).Close(0xc0003bfe80)
	/home/vagrant/gopath/pkg/mod/github.com/jmhodges/levigo@v1.0.0/db.go:387 +0x3f fp=0xc0038bdc70 sp=0xc0038bdc58 pc=0xc436df
github.com/tmm1/blevex/leveldb.(*Store).Close(0xc00018ac00, 0x14, 0xc0001e6848)
	/home/vagrant/gopath/pkg/mod/github.com/tmm1/blevex@v0.0.0-20170301185655-58782622cfc6/leveldb/store.go:61 +0x2f fp=0xc0038bdc88 sp=0xc0038bdc70 pc=0xc483bf
github.com/blevesearch/bleve/index/upsidedown.(*UpsideDownCouch).Close(0xc000117280, 0x1731640, 0xc00017e150)
	/home/vagrant/gopath/pkg/mod/github.com/blevesearch/bleve@v0.7.0/index/upsidedown/upsidedown.go:412 +0x34 fp=0xc0038bdcb0 sp=0xc0038bdc88 pc=0xb189b4
github.com/blevesearch/bleve.(*indexImpl).Close(0xc00017e150, 0x0, 0x0)
	/home/vagrant/gopath/pkg/mod/github.com/blevesearch/bleve@v0.7.0/index_impl.go:665 +0xa9 fp=0xc0038bdce0 sp=0xc0038bdcb0 pc=0xc2b239

According to google/leveldb#708, this assertion means an iterator was still alive when leveldb_close() was called.

@tmm1
Copy link
Contributor Author

tmm1 commented Jul 24, 2019

Note that this was observed on bleve v0.7.0, so its possible the leak is no longer present.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant