Closed dnkolegov closed 2 years ago
If run Eudico subnet tests with race option like this
race
go test -v -race -tags=2k -count=1 -run TestEudicoSubnet ./itests
we will get the following:
================== WARNING: DATA RACE Read at 0x00c004595da0 by goroutine 358: runtime.mapaccess1_fast64() /opt/homebrew/Cellar/go/1.18.1/libexec/src/runtime/map_fast64.go:13 +0x1cc github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*Subnet).getPrevCheck() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/checkpoint.go:47 +0xcc github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*Subnet).populateCheckpoint() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/checkpoint.go:125 +0x6c github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).matchCheckpointSignature() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/events.go:173 +0xaf0 github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).listenSubnetEvents.func4() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/events.go:91 +0xcc github.com/filecoin-project/lotus/chain/events.(*watcherEvents).checkStateChanges() /Users/alpha/Projects/eudico/chain/events/events_called.go:350 +0x138 github.com/filecoin-project/lotus/chain/events.(*hcEventsObserver).Apply() /Users/alpha/Projects/eudico/chain/events/events_called.go:125 +0xe0 github.com/filecoin-project/lotus/chain/events.(*observer).headChange() /Users/alpha/Projects/eudico/chain/events/observer.go:233 +0xb34 github.com/filecoin-project/lotus/chain/events.(*observer).applyChanges() /Users/alpha/Projects/eudico/chain/events/observer.go:152 +0x384 github.com/filecoin-project/lotus/chain/events.(*observer).listenHeadChangesOnce() /Users/alpha/Projects/eudico/chain/events/observer.go:126 +0x948 github.com/filecoin-project/lotus/chain/events.(*observer).listenHeadChanges() /Users/alpha/Projects/eudico/chain/events/observer.go:57 +0xa8 github.com/filecoin-project/lotus/chain/events.(*observer).start.func1() /Users/alpha/Projects/eudico/chain/events/observer.go:44 +0x50 Previous write at 0x00c004595da0 by goroutine 396: runtime.mapassign_fast64ptr() /opt/homebrew/Cellar/go/1.18.1/libexec/src/runtime/map_fast64.go:183 +0x36c github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*Subnet).gcCheckBuf() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/checkpoint.go:76 +0x13c github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).matchCheckpointSignature.func1() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/events.go:144 +0x68 Goroutine 358 (running) created at: github.com/filecoin-project/lotus/chain/events.(*observer).start() /Users/alpha/Projects/eudico/chain/events/observer.go:44 +0xd0 github.com/filecoin-project/lotus/chain/events.NewEventsWithConfidence() /Users/alpha/Projects/eudico/chain/events/events.go:53 +0x60 github.com/filecoin-project/lotus/chain/events.NewEvents() /Users/alpha/Projects/eudico/chain/events/events.go:65 +0x1eac github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).startSubnet() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/manager.go:307 +0x1e84 github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).syncSubnet() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/manager.go:543 +0x1f4 github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).JoinSubnet() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/manager.go:518 +0xd64 github.com/filecoin-project/lotus/node/impl/hierarchical.(*HierarchicalAPI).JoinSubnet() /Users/alpha/Projects/eudico/node/impl/hierarchical/subnet.go:38 +0x94 github.com/filecoin-project/lotus/node/impl.(*FullNodeAPI).JoinSubnet() <autogenerated>:1 +0x28 runtime.call128() /opt/homebrew/Cellar/go/1.18.1/libexec/src/runtime/asm_arm64.s:510 +0x78 reflect.Value.Call() /opt/homebrew/Cellar/go/1.18.1/libexec/src/reflect/value.go:339 +0x94 github.com/filecoin-project/lotus/metrics/proxy.proxy.func1() /Users/alpha/Projects/eudico/metrics/proxy/proxy.go:61 +0x348 reflect.callReflect() /opt/homebrew/Cellar/go/1.18.1/libexec/src/reflect/value.go:742 +0x720 reflect.callReflect() <autogenerated>:1 +0x2c reflect.makeFuncStub() /opt/homebrew/Cellar/go/1.18.1/libexec/src/reflect/asm_arm64.s:53 +0x58 github.com/filecoin-project/lotus/api.(*FullNodeStruct).JoinSubnet() <autogenerated>:1 +0x88 runtime.call128() /opt/homebrew/Cellar/go/1.18.1/libexec/src/runtime/asm_arm64.s:510 +0x78 reflect.Value.Call() /opt/homebrew/Cellar/go/1.18.1/libexec/src/reflect/value.go:339 +0x94 github.com/filecoin-project/go-jsonrpc.doCall() /Users/alpha/go/pkg/mod/github.com/filecoin-project/go-jsonrpc@v0.1.5/handler.go:162 +0xb8 github.com/filecoin-project/go-jsonrpc.(*RPCServer).handle() /Users/alpha/go/pkg/mod/github.com/filecoin-project/go-jsonrpc@v0.1.5/handler.go:259 +0x1408 github.com/filecoin-project/go-jsonrpc.(*wsConn).handleCall.func4() /Users/alpha/go/pkg/mod/github.com/filecoin-project/go-jsonrpc@v0.1.5/websocket.go:424 +0xd0 Goroutine 396 (finished) created at: github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).matchCheckpointSignature() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/events.go:144 +0x59c github.com/filecoin-project/lotus/chain/consensus/hierarchical/subnet/manager.(*SubnetMgr).listenSubnetEvents.func4() /Users/alpha/Projects/eudico/chain/consensus/hierarchical/subnet/manager/events.go:91 +0xcc github.com/filecoin-project/lotus/chain/events.(*watcherEvents).checkStateChanges() /Users/alpha/Projects/eudico/chain/events/events_called.go:350 +0x138 github.com/filecoin-project/lotus/chain/events.(*hcEventsObserver).Apply() /Users/alpha/Projects/eudico/chain/events/events_called.go:125 +0xe0 github.com/filecoin-project/lotus/chain/events.(*observer).headChange() /Users/alpha/Projects/eudico/chain/events/observer.go:233 +0xb34 github.com/filecoin-project/lotus/chain/events.(*observer).applyChanges() /Users/alpha/Projects/eudico/chain/events/observer.go:152 +0x384 github.com/filecoin-project/lotus/chain/events.(*observer).listenHeadChangesOnce() /Users/alpha/Projects/eudico/chain/events/observer.go:126 +0x948 github.com/filecoin-project/lotus/chain/events.(*observer).listenHeadChanges() /Users/alpha/Projects/eudico/chain/events/observer.go:57 +0xa8 github.com/filecoin-project/lotus/chain/events.(*observer).start.func1() /Users/alpha/Projects/eudico/chain/events/observer.go:44 +0x50 ==================
If run Eudico subnet tests with
race
option like thisgo test -v -race -tags=2k -count=1 -run TestEudicoSubnet ./itests
we will get the following: