mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-20 21:54:30 +00:00
## Why this should be merged Fixes a potential race in parallel handler where the goroutine that closes `whenProcessed` could observe a re-assigned channel for the next block, leading to an incorrect close and possible double-close panic. ## How this works `finishBlock()` waits for the channel to be closed by the goroutine, instead of for the `WaitGroup` that closes _just_ before it, which is what allowed the race. ## How this was tested It's not possible to include a specific test. This PR therefore also includes thorough documentation of every per-block goroutine and when it is guaranteed to complete. --------- Co-authored-by: Arran Schlosberg <me@arranschlosberg.com> |
||
|---|---|---|
| .. | ||
| cmd/internalise | ||
| debug | ||
| ethapi | ||
| ethtest | ||
| hookstest | ||
| legacy | ||
| options | ||
| precompiles/parallel | ||
| reentrancy | ||
| register | ||
| set | ||
| stateconf | ||
| sync | ||
| testonly | ||
| tooling | ||
| extraslock.go | ||
| extraslock_test.go | ||
| interfaces_test.go | ||
| libevm.go | ||