Skip to content
This repository was archived by the owner on Aug 2, 2021. It is now read-only.
This repository was archived by the owner on Aug 2, 2021. It is now read-only.

Data race in storage.testLDBStoreCollectGarbage() #1118

@frncmx

Description

@frncmx

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions