# TCP Zero Window Probe Failure: no response from receiver after 3 probes

- **ID:** `networking/tcp-zero-window-probe-failure`
- **Domain:** networking
- **Category:** protocol_error
- **Error Code:** `ETIMEDOUT`
- **Verification:** ai_generated
- **Fix Rate:** 78%

## Root Cause

The receiver's TCP window is zero and the sender's zero-window probes are not acknowledged, indicating the receiver is unresponsive or has crashed while holding a zero window.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Linux kernel 5.15 | active | — | — |
| Linux kernel 6.1 | active | — | — |
| FreeBSD 13.2 | active | — | — |

## Workarounds

1. **Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp** (85% success)
   ```
   Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp
   ```
2. **Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5** (80% success)
   ```
   Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5
   ```

## Dead Ends

- **** — Zero-window probing is separate from keepalive; keepalive settings do not affect probe retransmission timers. (85% fail)
- **** — The issue is at the application or receiver side; restarting the sender's interface does not fix the receiver's unresponsiveness. (75% fail)
