That’s the moment many discovered a strange Linux terminal bug tied to how socat handles certain I/O streams. Not a crash, not a core dump—just a lock-up that halts your workflow. And if you use socat to build port forwards, pipe data between sockets, or handle pseudo-terminals, you’ve likely seen it.
The bug appears when socat is invoked with specific PTY configurations. The terminal stops responding because of how EOF and SIGTERM signals are passed—or rather, not passed—between connected endpoints. Some builds on Linux distributions include versions of socat that mishandle terminal state cleanup, leaving the shell stuck in raw mode. Escape sequences fail. Your keystrokes vanish.
Debugging shows that the problem lives in how socat closes file descriptors on one side before the tty state is restored. The process exits, but the terminal never recovers. You end up needing reset or a new shell session. For engineers running automated scripts through socat—especially when using containerized environments—this can break CI/CD jobs and live deployments. It’s not rare; it’s reproducible with a small, simple command.
Example: