# panic: send on closed channel (inside select statement)

- **ID:** `go/send-on-closed-channel-select`
- **Domain:** go
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

A select case attempts to send on a channel that has been closed by another goroutine, even though select is often assumed to protect sends.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.18 | active | — | — |
| 1.22 | active | — | — |

## Workarounds

1. **** (90% success)
   ```
   select {
case ch <- v:
case <-done:
    return
}
   ```
2. **** (92% success)
   ```
   // only the owner closes; producers send via a request channel
   ```

## Dead Ends

- **** — default does not prevent the panic when the send case is selected and the channel is closed. (90% fail)
- **** — Buffering delays but does not prevent the panic; a closed channel rejects all sends regardless of buffer. (85% fail)
