From 7e76b05c283a784327c22c6a7c86fd413d79e662 Mon Sep 17 00:00:00 2001 From: amit-momin Date: Thu, 23 Jul 2026 15:26:41 -0500 Subject: [PATCH] Fixed EVM TXM broadcaster race issue --- chains/txmgr/broadcaster.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/chains/txmgr/broadcaster.go b/chains/txmgr/broadcaster.go index 38fc118..2226b8e 100644 --- a/chains/txmgr/broadcaster.go +++ b/chains/txmgr/broadcaster.go @@ -201,6 +201,11 @@ func (eb *Broadcaster[CID, HEAD, ADDR, THASH, BHASH, SEQ, FEE]) loadAndMonitor() defer cancel() eb.sequenceTracker.LoadNextSequences(ctx, eb.enabledAddresses) eb.wg.Add(len(eb.enabledAddresses)) + + // eb.triggers is also read by Trigger() under initSync, so it must be populated under the + // same lock to avoid a concurrent map read/write. + eb.initSync.Lock() + defer eb.initSync.Unlock() for _, addr := range eb.enabledAddresses { triggerCh := make(chan struct{}, 1) eb.triggers[addr] = triggerCh