core: fix deadlock in parallel state processor

This commit is contained in:
Marius van der Wijden 2026-03-19 12:03:28 +01:00 committed by MariusVanDerWijden
parent ff772bfa08
commit 077a58a49c

View file

@ -200,6 +200,7 @@ func (p *ParallelStateProcessor) resultHandler(block *types.Block, preTxStateRea
for {
select {
case res := <-txResCh:
numTxComplete++
if execErr == nil {
if res.err != nil {
execErr = res.err
@ -212,7 +213,6 @@ func (p *ParallelStateProcessor) resultHandler(block *types.Block, preTxStateRea
}
}
}
numTxComplete++
if numTxComplete == len(block.Transactions()) {
break loop
}
@ -220,6 +220,8 @@ func (p *ParallelStateProcessor) resultHandler(block *types.Block, preTxStateRea
}
if execErr != nil {
// Drain stateRootCalcResCh so calcAndVerifyRoot goroutine can exit.
<-stateRootCalcResCh
resCh <- &ProcessResultWithMetrics{ProcessResult: &ProcessResult{Error: execErr}}
return
}