Subject: bug#54062: 29.0.50; [PATCH] Eshell should inform processes when a pipe is broken

From: Eli Zaretskii <[email-masked]>
Date: Mon, 21 Feb 2022 20:31:15 +0200

> From: Lars Ingebrigtsen <[email-masked]>
> Cc: Jim Porter <[email-masked]>,  [email-masked]
> Date: Mon, 21 Feb 2022 18:39:16 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > Thanks; I have no further comments.
> 
> So I've pushed the patch series to Emacs 29.

Something's amiss here: the new test fails on MS-Windows because it
signals an error inside eshell-wait-for-subprocess:

  Test esh-proc-test/sigpipe-exits-process backtrace:
    signal(eshell-pipe-broken #<process sh.exe>)
    eshell-output-object-to-target("killed\n" #<process sh.exe>)
    eshell-output-object("killed\n" nil [nil (nil . 0) (nil . 0)])
    #f(compiled-function () #<bytecode 0x1c2b272f8d5f2c5e>)()
    apply(#f(compiled-function () #<bytecode 0x1c2b272f8d5f2c5e>) nil)
    timer-event-handler([t 25107 54636 874750 nil #f(compiled-function (
    sleep-for(0.1)
    sit-for(0.1)
    (while (if all eshell-process-list (eshell-interactive-process-p)) (
    (let ((start (current-time))) (while (if all eshell-process-list (es
    eshell-wait-for-subprocess(t)

Sounds like the shell is already dead/killed when
eshell-wait-for-subprocess tries to send it a string?