Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues found by Go data race detector -race #478

Open
3 of 6 tasks
bap2pecs opened this issue Jul 5, 2024 · 1 comment
Open
3 of 6 tasks

Issues found by Go data race detector -race #478

bap2pecs opened this issue Jul 5, 2024 · 1 comment

Comments

@bap2pecs
Copy link
Collaborator

bap2pecs commented Jul 5, 2024

Fixes

Context

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/[email protected]/server.go:1379 +0x1348
  google.golang.org/grpc.(*Server).handleStream()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1790 +0x11a0
  google.golang.org/grpc.(*Server).serveStreams.func2.1()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/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/[email protected]/server.go:1379 +0x1348
  google.golang.org/grpc.(*Server).handleStream()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1790 +0x11a0
  google.golang.org/grpc.(*Server).serveStreams.func2.1()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1029 +0xe8

Goroutine 96958 (running) created at:
  google.golang.org/grpc.(*Server).serveStreams.func2()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1040 +0x1e4
  google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/internal/transport/http2_server.go:630 +0x2b64
  google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/internal/transport/http2_server.go:671 +0x318
  google.golang.org/grpc.(*Server).serveStreams()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1023 +0x4dc
  google.golang.org/grpc.(*Server).handleRawConn.func1()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:959 +0x7c

Goroutine 96103 (running) created at:
  google.golang.org/grpc.(*Server).serveStreams.func2()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1040 +0x1e4
  google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/internal/transport/http2_server.go:630 +0x2b64
  google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/internal/transport/http2_server.go:671 +0x318
  google.golang.org/grpc.(*Server).serveStreams()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:1023 +0x4dc
  google.golang.org/grpc.(*Server).handleRawConn.func1()
      /Users/zidong/go/pkg/mod/google.golang.org/[email protected]/server.go:959 +0x7c
==================
2024-07-05T17:00:07.246-0400	DEBUG	opstackl2/consumer.go:318	QueryBlock	{"height": 1, "block_hash": "d5c9bdbb13effc60f0dfcd52a100762abb69958c9a91aa9466af1b1e135436bf"}
@bap2pecs
Copy link
Collaborator Author

bap2pecs commented Jul 5, 2024

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/[email protected]/types/config.go:89 +0xc4
  github.com/cosmos/relayer/v2/relayer/chains/cosmos.SetSDKConfigContext()
      /Users/zidong/go/pkg/mod/github.com/cosmos/relayer/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/retry.go:115 +0x30
  github.com/avast/retry-go/v4.DoWithData[go.shape.interface {}]()
      /Users/zidong/go/pkg/mod/github.com/avast/retry-go/[email protected]/retry.go:179 +0x8f8
  github.com/avast/retry-go/v4.Do()
      /Users/zidong/go/pkg/mod/github.com/avast/retry-go/[email protected]/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/[email protected]/types/config.go:162 +0xfc
  github.com/cosmos/cosmos-sdk/types.AccAddressFromBech32()
      /Users/zidong/go/pkg/mod/github.com/cosmos/[email protected]/types/address.go:199 +0xbc
  github.com/babylonchain/babylon/x/btcstkconsumer/keeper.NewKeeper()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/x/btcstkconsumer/keeper/keeper.go:33 +0x6c
  github.com/babylonchain/babylon/app.NewBabylonApp()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/app/app.go:636 +0x4244
  github.com/babylonchain/babylon/app.NewTmpBabylonApp()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/app/encoding.go:31 +0x300
  github.com/babylonchain/babylon/app.GetEncodingConfig()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/app/encoding.go:46 +0x24
  github.com/babylonchain/babylon/client/client.New()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/client/client/client.go:59 +0x144
  github.com/babylonchain/babylon-da-sdk/sdk.NewClient()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/sdk/client.go:77 +0x11c
  github.com/ethereum-optimism/optimism/op-node/rollup/finality.(*Finalizer).tryFinalize()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/op-node/node/node.go:515 +0x74
  github.com/ethereum-optimism/optimism/op-e2e.SystemConfig.Start()
      /Users/zidong/go/pkg/mod/github.com/babylonchain/[email protected]/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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant