This repository was archived by the owner on Aug 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 110
This repository was archived by the owner on Aug 2, 2021. It is now read-only.
Data race in storage.testLDBStoreCollectGarbage() #1118
Copy link
Copy link
Closed
ethereum/go-ethereum
#18512Description
How to reproduce?
go test -race -count 1 -run TestLDBStoreCollectGarbage github.com/ethereum/go-ethereum/swarm/storage
Stacktrace
==================
WARNING: DATA RACE
Read at 0x00c0000cad28 by goroutine 8:
github.com/ethereum/go-ethereum/swarm/storage.testLDBStoreCollectGarbage()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/ldbstore_test.go:391 +0x559
fmt.Fscanf()
/usr/lib/go/src/fmt/scan.go:143 +0xe9
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).checkAndCleanFiles()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db_util.go:52 +0x2e4
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.openDB()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:130 +0xa00
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:657 +0x1ed
fmt.Fscanf()
/usr/lib/go/src/fmt/scan.go:143 +0xe9
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).recoverJournal()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:476 +0xe3
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.openDB()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:125 +0x9dc
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.Open()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:197 +0x1ed
fmt.Sscanf()
/usr/lib/go/src/fmt/scan.go:114 +0xd0
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.fsParseName()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:643 +0x144
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage.(*fileStorage).List()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go:458 +0x279
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.(*session).recover.func1()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/session.go:113 +0xbb
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.(*session).recover()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/session.go:121 +0x17b7
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.Open()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:183 +0xd7
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb.OpenFile()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/db.go:219 +0xa5
github.com/ethereum/go-ethereum/swarm/storage.NewLDBDatabase()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/database.go:37 +0xc3
github.com/ethereum/go-ethereum/swarm/storage.NewLDBStore()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/ldbstore.go:152 +0x37c
github.com/ethereum/go-ethereum/swarm/storage.newLDBStore()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/common_test.go:70 +0x1b5
github.com/ethereum/go-ethereum/swarm/storage.testLDBStoreCollectGarbage()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/ldbstore_test.go:367 +0x20b
testing.tRunner()
/usr/lib/go/src/testing/testing.go:827 +0x162
Previous write at 0x00c0000cad28 by goroutine 124:
github.com/ethereum/go-ethereum/swarm/storage.(*LDBStore).delete()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/ldbstore.go:761 +0x169
github.com/ethereum/go-ethereum/swarm/storage.(*LDBStore).collectGarbage()
/home/frncmx/code/src/github.com/ethereum/go-ethereum/swarm/storage/ldbstore.go:362 +0x5bf