ethereum-optimism / ethereum-optimism/optimism

[Flake] TestELP2PFCUUnavailableHash: send-on-closed-channel panic in KonaNode shutdown

Open
#21,064 0 comments 0 reactions 0 assignees View on GitHub
C-flake
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.