Closed whunmr closed 5 years ago
fix data race in #226
and another two data races:
================== WARNING: DATA RACE Write at 0x00c0000ec210 by goroutine 82: github.com/copernet/copernicus/model/chain.(*Chain).SetTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:345 +0x3d1 github.com/copernet/copernicus/logic/lchain.UpdateTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lchain.go:390 +0x96 github.com/copernet/copernicus/logic/lchain.ConnectTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lchain.go:301 +0x1db0 github.com/copernet/copernicus/logic/lchain.ActivateBestChainStep() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lactivechain.go:186 +0x750 github.com/copernet/copernicus/logic/lchain.ActivateBestChain() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lactivechain.go:85 +0x5c1 github.com/copernet/copernicus/service.ProcessNewBlock() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/service/blockservice.go:97 +0x92e github.com/copernet/copernicus/service.ProcessBlock() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/service/blockservice.go:51 +0x75b github.com/copernet/copernicus/net/syncmanager.(*SyncManager).handleBlockMsg() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:650 +0x563 github.com/copernet/copernicus/net/syncmanager.(*SyncManager).messagesHandler() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:1301 +0xc38 Previous read at 0x00c0000ec210 by goroutine 135: github.com/copernet/copernicus/model/chain.(*Chain).TipHeight() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:170 +0x50 github.com/copernet/copernicus/rpc.handleWaitForBlockHeight() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcblockchain.go:1007 +0x29b github.com/copernet/copernicus/rpc.(*Server).standardCmdResult() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:217 +0x1f6 github.com/copernet/copernicus/rpc.(*Server).jsonRPCRead() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:378 +0x1d4a github.com/copernet/copernicus/rpc.(*Server).Start.func1() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:448 +0x43e net/http.HandlerFunc.ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:1964 +0x6f net/http.(*ServeMux).ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:2361 +0x2cb net/http.serverHandler.ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:2741 +0x34e net/http.(*conn).serve() /usr/local/opt/go/libexec/src/net/http/server.go:1847 +0x1f7b ================== ================== WARNING: DATA RACE Write at 0x00c0000fe0c0 by goroutine 76: github.com/copernet/copernicus/model/chain.(*Chain).SetTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:328 +0x3e4 github.com/copernet/copernicus/logic/lchain.UpdateTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lchain.go:390 +0x96 github.com/copernet/copernicus/logic/lchain.DisconnectTip() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/logic/lchain/lchain.go:367 +0x989 github.com/copernet/copernicus/rpc.handleInvalidateBlock() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcblockchain.go:900 +0x57e github.com/copernet/copernicus/rpc.(*Server).standardCmdResult() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:217 +0x1f6 github.com/copernet/copernicus/rpc.(*Server).jsonRPCRead() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:378 +0x1d4a github.com/copernet/copernicus/rpc.(*Server).Start.func1() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/rpc/rpcserver.go:448 +0x43e net/http.HandlerFunc.ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:1964 +0x6f net/http.(*ServeMux).ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:2361 +0x2cb net/http.serverHandler.ServeHTTP() /usr/local/opt/go/libexec/src/net/http/server.go:2741 +0x34e net/http.(*conn).serve() /usr/local/opt/go/libexec/src/net/http/server.go:1847 +0x1f7b Previous read at 0x00c0000fe0c0 by goroutine 83: github.com/copernet/copernicus/model/chain.(*Chain).GetIndex() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:264 +0x74 github.com/copernet/copernicus/model/chain.(*Chain).Contains() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:286 +0x8d github.com/copernet/copernicus/model/chain.(*Chain).FindFork() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/model/chain/chain.go:410 +0x135 github.com/copernet/copernicus/net/syncmanager.(*SyncManager).syncPoints() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:763 +0x268 github.com/copernet/copernicus/net/syncmanager.(*SyncManager).fetchHeaderBlocks() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:793 +0x37b github.com/copernet/copernicus/net/syncmanager.(*SyncManager).handleBlockMsg() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:707 +0x102f github.com/copernet/copernicus/net/syncmanager.(*SyncManager).messagesHandler() /Users/bj1809120051/.go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:1301 +0xc38
LGTM @whunmr
fix data race in #226
and another two data races: