babylonchain / finality-provider

A peripheral program run by the finality providers
Other
15 stars 26 forks source link

Issues found by Go data race detector `-race` #478

Open bap2pecs opened 2 weeks ago

bap2pecs commented 2 weeks ago

Fixes

add -race in the make target:

$ make test-e2e-op                                                                                                                  [16:40:14]
Killed processes 17568 
rm -rf ~/.babylond ~/.wasmd ~/.bcd
cd tools; \
    go install -trimpath github.com/babylonchain/babylon/cmd/babylond
go test -race -mod=readonly -timeout=25m -v github.com/babylonchain/finality-provider/itest/opstackl2 -count=1 --tags=e2e_op --run ^TestOpMultipleFinalityProviders
# github.com/babylonchain/finality-provider/itest/opstackl2.test
ld: warning: '/private/var/folders/9_/q4wsdnh14_s60_74cd2rbztm0000gp/T/go-link-3517379069/000087.o' has malformed LC_DYSYMTAB, expected 98 undefined symbols to start at index 1626, found 95 undefined symbols starting at index 1626
data race messages ``` 2024-07-05T17:00:07.238-0400 INFO service/chain_poller.go:80 starting the chain poller 2024-07-05T17:00:07.241-0400 INFO service/chain_poller.go:94 the chain poller is successfully started ================== WARNING: DATA RACE Write at 0x00c007153660 by goroutine 96958: strings.(*Reader).Reset() /opt/homebrew/Cellar/go/1.22.4/libexec/src/strings/reader.go:156 +0x8c github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).getEOTSPrivKey() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:281 +0x6c github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).KeyRecord() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:264 +0x84 github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).getRandomnessPair() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:250 +0x64 github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).CreateRandomnessPairList() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:173 +0xe0 github.com/babylonchain/finality-provider/eotsmanager/service.(*rpcServer).CreateRandomnessPairList() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/service/rpcserver.go:59 +0x10c github.com/babylonchain/finality-provider/eotsmanager/proto._EOTSManager_CreateRandomnessPairList_Handler() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/proto/eotsmanager_grpc.pb.go:191 +0x248 google.golang.org/grpc.(*Server).processUnaryRPC() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1379 +0x1348 google.golang.org/grpc.(*Server).handleStream() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1790 +0x11a0 google.golang.org/grpc.(*Server).serveStreams.func2.1() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1029 +0xe8 Previous write at 0x00c007153660 by goroutine 96103: strings.(*Reader).Reset() /opt/homebrew/Cellar/go/1.22.4/libexec/src/strings/reader.go:156 +0x8c github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).getEOTSPrivKey() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:281 +0x6c github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).KeyRecord() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:264 +0x84 github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).getRandomnessPair() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:250 +0x64 github.com/babylonchain/finality-provider/eotsmanager.(*LocalEOTSManager).CreateRandomnessPairList() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/localmanager.go:173 +0xe0 github.com/babylonchain/finality-provider/eotsmanager/service.(*rpcServer).CreateRandomnessPairList() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/service/rpcserver.go:59 +0x10c github.com/babylonchain/finality-provider/eotsmanager/proto._EOTSManager_CreateRandomnessPairList_Handler() /Users/zidong/Documents/Projects/babylon-finality-provider/eotsmanager/proto/eotsmanager_grpc.pb.go:191 +0x248 google.golang.org/grpc.(*Server).processUnaryRPC() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1379 +0x1348 google.golang.org/grpc.(*Server).handleStream() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1790 +0x11a0 google.golang.org/grpc.(*Server).serveStreams.func2.1() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1029 +0xe8 Goroutine 96958 (running) created at: google.golang.org/grpc.(*Server).serveStreams.func2() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1040 +0x1e4 google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/internal/transport/http2_server.go:630 +0x2b64 google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/internal/transport/http2_server.go:671 +0x318 google.golang.org/grpc.(*Server).serveStreams() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1023 +0x4dc google.golang.org/grpc.(*Server).handleRawConn.func1() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:959 +0x7c Goroutine 96103 (running) created at: google.golang.org/grpc.(*Server).serveStreams.func2() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1040 +0x1e4 google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/internal/transport/http2_server.go:630 +0x2b64 google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/internal/transport/http2_server.go:671 +0x318 google.golang.org/grpc.(*Server).serveStreams() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1023 +0x4dc google.golang.org/grpc.(*Server).handleRawConn.func1() /Users/zidong/go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:959 +0x7c ================== 2024-07-05T17:00:07.246-0400 DEBUG opstackl2/consumer.go:318 QueryBlock {"height": 1, "block_hash": "d5c9bdbb13effc60f0dfcd52a100762abb69958c9a91aa9466af1b1e135436bf"} ```
bap2pecs commented 2 weeks ago

data race fixed by #482

data race messages ``` WARNING: DATA RACE Write at 0x00c00266b7d0 by goroutine 98874: runtime.mapaccess2_faststr() /opt/homebrew/Cellar/go/1.22.4/libexec/src/runtime/map_faststr.go:108 +0x42c github.com/cosmos/cosmos-sdk/types.(*Config).SetBech32PrefixForAccount() /Users/zidong/go/pkg/mod/github.com/cosmos/cosmos-sdk@v0.50.6/types/config.go:89 +0xc4 github.com/cosmos/relayer/v2/relayer/chains/cosmos.SetSDKConfigContext() /Users/zidong/go/pkg/mod/github.com/cosmos/relayer/v2@v2.5.2/relayer/chains/cosmos/bech32_hack.go:24 +0x64 github.com/cosmos/relayer/v2/relayer/chains/cosmos.(*CosmosProvider).SetSDKContext() /Users/zidong/go/pkg/mod/github.com/cosmos/relayer/v2@v2.5.2/relayer/chains/cosmos/bech32_hack.go:17 +0xac github.com/cosmos/relayer/v2/relayer/chains/cosmos.(*CosmosProvider).buildMessages() /Users/zidong/go/pkg/mod/github.com/cosmos/relayer/v2@v2.5.2/relayer/chains/cosmos/tx.go:605 +0x94 github.com/cosmos/relayer/v2/relayer/chains/cosmos.(*CosmosProvider).SendMessagesToMempool() /Users/zidong/go/pkg/mod/github.com/cosmos/relayer/v2@v2.5.2/relayer/chains/cosmos/tx.go:175 +0x128 github.com/babylonchain/finality-provider/cosmwasmclient/client.(*Client).ReliablySendMsgs.func2.1() /Users/zidong/Documents/Projects/babylon-finality-provider/cosmwasmclient/client/tx.go:86 +0xf4 github.com/babylonchain/finality-provider/cosmwasmclient/client.(*Client).accessKeyWithLock() /Users/zidong/Documents/Projects/babylon-finality-provider/cosmwasmclient/client/keys.go:41 +0x1b8 github.com/babylonchain/finality-provider/cosmwasmclient/client.(*Client).ReliablySendMsgs.func2() /Users/zidong/Documents/Projects/babylon-finality-provider/cosmwasmclient/client/tx.go:85 +0x148 github.com/avast/retry-go/v4.Do.func1() /Users/zidong/go/pkg/mod/github.com/avast/retry-go/v4@v4.5.1/retry.go:115 +0x30 github.com/avast/retry-go/v4.DoWithData[go.shape.interface {}]() /Users/zidong/go/pkg/mod/github.com/avast/retry-go/v4@v4.5.1/retry.go:179 +0x8f8 github.com/avast/retry-go/v4.Do() /Users/zidong/go/pkg/mod/github.com/avast/retry-go/v4@v4.5.1/retry.go:118 +0x70 github.com/babylonchain/finality-provider/cosmwasmclient/client.(*Client).ReliablySendMsgs() /Users/zidong/Documents/Projects/babylon-finality-provider/cosmwasmclient/client/tx.go:83 +0x58c github.com/babylonchain/finality-provider/clientcontroller/opstackl2.(*OPStackL2ConsumerController).reliablySendMsgs() /Users/zidong/Documents/Projects/babylon-finality-provider/clientcontroller/opstackl2/consumer.go:104 +0x9f4 github.com/babylonchain/finality-provider/clientcontroller/opstackl2.(*OPStackL2ConsumerController).SubmitBatchFinalitySigs() /Users/zidong/Documents/Projects/babylon-finality-provider/clientcontroller/opstackl2/consumer.go:251 +0x9b0 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).SubmitBatchFinalitySignatures() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_instance.go:858 +0x424 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).FastSync() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fastsync.go:83 +0x3ac github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).tryFastSync() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_instance.go:431 +0x1a4 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).finalitySigSubmissionLoop() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_instance.go:248 +0x194 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).Start.gowrap1() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_instance.go:134 +0x34 Previous read at 0x00c00266b7d0 by goroutine 7605: runtime.evacuate_fast64() /opt/homebrew/Cellar/go/1.22.4/libexec/src/runtime/map_fast64.go:376 +0x3dc github.com/cosmos/cosmos-sdk/types.(*Config).GetBech32AccountAddrPrefix() /Users/zidong/go/pkg/mod/github.com/cosmos/cosmos-sdk@v0.50.6/types/config.go:162 +0xfc github.com/cosmos/cosmos-sdk/types.AccAddressFromBech32() /Users/zidong/go/pkg/mod/github.com/cosmos/cosmos-sdk@v0.50.6/types/address.go:199 +0xbc github.com/babylonchain/babylon/x/btcstkconsumer/keeper.NewKeeper() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-private@v0.8.6-0.20240705135310-e91ff7f60ead/x/btcstkconsumer/keeper/keeper.go:33 +0x6c github.com/babylonchain/babylon/app.NewBabylonApp() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-private@v0.8.6-0.20240705135310-e91ff7f60ead/app/app.go:636 +0x4244 github.com/babylonchain/babylon/app.NewTmpBabylonApp() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-private@v0.8.6-0.20240705135310-e91ff7f60ead/app/encoding.go:31 +0x300 github.com/babylonchain/babylon/app.GetEncodingConfig() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-private@v0.8.6-0.20240705135310-e91ff7f60ead/app/encoding.go:46 +0x24 github.com/babylonchain/babylon/client/client.New() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-private@v0.8.6-0.20240705135310-e91ff7f60ead/client/client/client.go:59 +0x144 github.com/babylonchain/babylon-da-sdk/sdk.NewClient() /Users/zidong/go/pkg/mod/github.com/babylonchain/babylon-da-sdk@v0.0.0-20240705141841-e18d8f028ec9/sdk/client.go:77 +0x11c github.com/ethereum-optimism/optimism/op-node/rollup/finality.(*Finalizer).tryFinalize() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/finality/finalizer.go:225 +0x458 github.com/ethereum-optimism/optimism/op-node/rollup/finality.(*Finalizer).OnEvent() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/finality/finalizer.go:156 +0xf4 github.com/ethereum-optimism/optimism/op-node/rollup.(*SynchronousDerivers).OnEvent() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/events.go:72 +0x84 github.com/ethereum-optimism/optimism/op-node/rollup.(*SynchronousEvents).Drain() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/synchronous.go:73 +0x58 github.com/ethereum-optimism/optimism/op-node/rollup/driver.(*Driver).eventLoop() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/driver/state.go:224 +0x3bc github.com/ethereum-optimism/optimism/op-node/rollup/driver.(*Driver).Start.gowrap1() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/driver/state.go:128 +0x34 Goroutine 98874 (running) created at: github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderInstance).Start() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_instance.go:134 +0x5c8 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderManager).addFinalityProviderInstance() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_manager.go:416 +0x2c0 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderManager).StartFinalityProvider() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/fp_manager.go:227 +0x1b8 github.com/babylonchain/finality-provider/finality-provider/service.(*FinalityProviderApp).StartHandlingFinalityProvider() /Users/zidong/Documents/Projects/babylon-finality-provider/finality-provider/service/app.go:230 +0x7a4 github.com/babylonchain/finality-provider/itest/opstackl2.(*OpL2ConsumerTestManager).StartFinalityProvider() /Users/zidong/Documents/Projects/babylon-finality-provider/itest/opstackl2/op_test_manager.go:388 +0x764 github.com/babylonchain/finality-provider/itest/opstackl2.TestOpMultipleFinalityProviders() /Users/zidong/Documents/Projects/babylon-finality-provider/itest/opstackl2/op_e2e_test.go:129 +0xac testing.tRunner() /opt/homebrew/Cellar/go/1.22.4/libexec/src/testing/testing.go:1689 +0x180 testing.(*T).Run.gowrap1() /opt/homebrew/Cellar/go/1.22.4/libexec/src/testing/testing.go:1742 +0x40 Goroutine 7605 (running) created at: github.com/ethereum-optimism/optimism/op-node/rollup/driver.(*Driver).Start() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/rollup/driver/state.go:128 +0x378 github.com/ethereum-optimism/optimism/op-node/node.(*OpNode).Start() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-node/node/node.go:515 +0x74 github.com/ethereum-optimism/optimism/op-e2e.SystemConfig.Start() /Users/zidong/go/pkg/mod/github.com/babylonchain/optimism@v0.0.0-20240705144333-0e1916f9e050/op-e2e/setup.go:742 +0x3254 github.com/babylonchain/finality-provider/itest/opstackl2.StartOpL2ConsumerManager() /Users/zidong/Documents/Projects/babylon-finality-provider/itest/opstackl2/op_test_manager.go:145 +0x1030 github.com/babylonchain/finality-provider/itest/opstackl2.TestOpMultipleFinalityProviders() /Users/zidong/Documents/Projects/babylon-finality-provider/itest/opstackl2/op_e2e_test.go:119 +0x30 testing.tRunner() /opt/homebrew/Cellar/go/1.22.4/libexec/src/testing/testing.go:1689 +0x180 testing.(*T).Run.gowrap1() /opt/homebrew/Cellar/go/1.22.4/libexec/src/testing/testing.go:1742 +0x40 ```