◐ Shell
clean mode source ↗

pty.spawn deadlock

Bug report

% yes | python3 -c "import pty; pty.spawn(['cat'])"
y
...
y^CTraceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.10/pty.py", line 181, in spawn
    _copy(master_fd, master_read, stdin_read)
  File "/usr/lib/python3.10/pty.py", line 161, in _copy
    _writen(master_fd, data)
  File "/usr/lib/python3.10/pty.py", line 127, in _writen
    n = os.write(fd, data)
KeyboardInterrupt

You will see 2048 lines of y due to tty echo, then the output stops and hangs forever.
Both python and cat block on write, waiting each other consume something from pty buffer.

Your environment

Tested on Linux/macOS with CPython 3.10.

Linked PRs