I see that this bug is about 13 years old. I think there's a pretty obvious solution: process-connection-type should default to nil. Otherwise this is a footgun just waiting to happen for anyone writing process-interaction code in Emacs. But if we don't do that, we should at least document it. See my attached patch. Btw, just to feed the fire, here's my own reproducer: (with-temp-buffer (make-process :name "broken" :buffer (current-buffer) :command '("cat")) (process-send-string nil (make-string 10000 ?x)) (process-send-eof) (sit-for 1) (cons (point-min) (point-max)))