Skip to content

p2p: race in dialTask #10992

@AskAlexSharov

Description

@AskAlexSharov

need port: ethereum/go-ethereum#29235
version: main 69c94ffd85d0cf34c2175d025a8f254cd21162c0

==================
WARNING: DATA RACE
Write at 0x00c040cc6280 by goroutine 1058044:
  github.com/ledgerwatch/erigon/p2p.(*dialTask).resolve()
      /home/ubuntu/erigon/p2p/dial.go:547 +0x259
  github.com/ledgerwatch/erigon/p2p.(*dialTask).run()
      /home/ubuntu/erigon/p2p/dial.go:508 +0xf8
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).startDial.func1()
      /home/ubuntu/erigon/p2p/dial.go:475 +0x57

Previous read at 0x00c040cc6280 by goroutine 4736:
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).updateStaticPool()
      /home/ubuntu/erigon/p2p/dial.go:442 +0xa9
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).expireHistory.func1()
      /home/ubuntu/erigon/p2p/dial.go:388 +0x71
  github.com/ledgerwatch/erigon/p2p.(*expHeap).expire()
      /home/ubuntu/erigon/p2p/util.go:62 +0xda
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).expireHistory()
      /home/ubuntu/erigon/p2p/dial.go:385 +0x12e
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).loop()
      /home/ubuntu/erigon/p2p/dial.go:320 +0x1f84
  github.com/ledgerwatch/erigon/p2p.newDialScheduler.gowrap2()
      /home/ubuntu/erigon/p2p/dial.go:189 +0x4f

Goroutine 1058044 (running) created at:
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).startDial()
      /home/ubuntu/erigon/p2p/dial.go:473 +0x656
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).startStaticDials()
      /home/ubuntu/erigon/p2p/dial.go:434 +0x144
  github.com/ledgerwatch/erigon/p2p.(*dialScheduler).loop()
      /home/ubuntu/erigon/p2p/dial.go:246 +0x24c
  github.com/ledgerwatch/erigon/p2p.newDialScheduler.gowrap2()
      /home/ubuntu/erigon/p2p/dial.go:189 +0x4f

Goroutine 4736 (running) created at:
  github.com/ledgerwatch/erigon/p2p.newDialScheduler()
      /home/ubuntu/erigon/p2p/dial.go:189 +0x88e
  github.com/ledgerwatch/erigon/p2p.(*Server).setupDialScheduler()
      /home/ubuntu/erigon/p2p/server.go:705 +0x5ce
  github.com/ledgerwatch/erigon/p2p.(*Server).Start()
      /home/ubuntu/erigon/p2p/server.go:534 +0x9eb
  github.com/ledgerwatch/erigon/p2p/sentry.(*GrpcServer).startP2PServer()
      /home/ubuntu/erigon/p2p/sentry/sentry_grpc_server.go:1039 +0x4fe
  github.com/ledgerwatch/erigon/p2p/sentry.(*GrpcServer).SetStatus()
      /home/ubuntu/erigon/p2p/sentry/sentry_grpc_server.go:1061 +0x835
  github.com/ledgerwatch/erigon-lib/direct.(*SentryClientDirect).SetStatus()
      /home/ubuntu/erigon/erigon-lib/direct/sentry_client.go:231 +0x62
  github.com/ledgerwatch/erigon/p2p/sentry/sentry_multi_client.SentryReconnectAndPumpStreamLoop[go.shape.*uint8]()
      /home/ubuntu/erigon/p2p/sentry/sentry_multi_client/sentry_multi_client.go:179 +0x5f9
  github.com/ledgerwatch/erigon/p2p/sentry/sentry_multi_client.(*MultiClient).RecvUploadHeadersMessageLoop()
      /home/ubuntu/erigon/p2p/sentry/sentry_multi_client/sentry_multi_client.go:110 +0x297
  github.com/ledgerwatch/erigon/p2p/sentry/sentry_multi_client.(*MultiClient).StartStreamLoops.gowrap3()
      /home/ubuntu/erigon/p2p/sentry/sentry_multi_client/sentry_multi_client.go:77 +0x6e
==================

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions