# fatal error: all goroutines are asleep - deadlock! (select with no ready case)

- **ID:** `go/select-no-case-ready-timeout`
- **Domain:** go
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

A select statement has no default and none of its channel cases are ready, and no other goroutine can make them ready, causing a global deadlock.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.0+ | active | — | — |

## Workarounds

1. **** (90% success)
   ```
   Add a timeout case with time.After and return an error on expiry.
   ```
2. **** (85% success)
   ```
   Ensure at least one case is a send that can always proceed, or restructure so the producer runs before the select.
   ```

## Dead Ends

- **** — Busy-looping burns CPU and may still never see data if the producer is also blocked. (70% fail)
