ethereum-optimism / ethereum-optimism/optimism
[Flake] TestELP2PFCUUnavailableHash: send-on-closed-channel panic in KonaNode shutdown
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 38m
- Merged PRs (30d)
- 164
Description
## Test
`TestELP2PFCUUnavailableHash` in `op-acceptance-tests/tests/sync/elsync/gap_elp2p`
## Symptom
`panic: send on closed channel` from `op-devstack/sysgo/l2_cl_kona.go:72` inside `(*KonaNode).Start.func2`, triggered during KonaNode shutdown ("Sending interrupt" precedes the panic in the log).
Stack:
```
goroutine 23438 [running]:
github.com/ethereum-optimism/optimism/op-devstack/sysgo.(*KonaNode).Start.func2(...)
/home/circleci/project/op-devstack/sysgo/l2_cl_kona.go:72 +0x4d3
github.com/ethereum-optimism/optimism/op-devstack/sysgo.(*KonaNode).Start.func3(...)
```
The panic is in test infrastructure (`op-devstack/sysgo`), not in production code or the test under test. A goroutine continues to send on a channel after another goroutine has closed it during shutdown.
## Frequency
8 flakes in last 90 days per CircleCI Insights, job `memory-all-kona-op-reth` / `memory-all-opn-op-reth`.
## Latest occurrence
PR #21045, CircleCI job 5119174:
- https://circleci.com/gh/ethereum-optimism/optimism/5119174
## Root cause hypothesis (to be verified by fixer)
Cleanup race in `KonaNode.Start`: one goroutine closes a channel during interrupt handling while another goroutine is still attempting to send on it. Fix should make the close/send ordering deterministic, not just narrow the window.
## Sibling
`TestSafeDoesNotAdvanceWhenUnsafeIsSyncing_NoELP2P` in the same package fails with the same panic in the same job — likely the same root cause.
(Filed by Claude on behalf of @Maurelian. A `flake-fixer` agent has been launched against this test.)
Contributor guide
Assessment
This issue has not been assessed yet.