From: Jim Porter Date: Sat, 10 Dec 2022 07:07:19 +0000 (-0800) Subject: Fix a race condition in Eshell's external process management X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2efb8d2e244d926ad5963faa4712145c8f0927ba;p=emacs.git Fix a race condition in Eshell's external process management If a process is busy writing output when 'eshell-sentinel' is called, it might take a bit of time to finish up. Don't call 'eshell-kill-process-function' until we're really finished (bug#59103). * lisp/eshell/esh-proc.el (eshell-sentinel): Call 'eshell-kill-process-function' in 'finish-io'. --- diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index f2d20b4cded..9c4036004ff 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -491,11 +491,11 @@ PROC is the process that's exiting. STRING is the exit message." (eshell-close-handles status (when status (list 'quote (= status 0))) - handles))))) + handles) + (eshell-kill-process-function proc string))))) (funcall finish-io)))) (when-let ((entry (assq proc eshell-process-list))) - (eshell-remove-process-entry entry)) - (eshell-kill-process-function proc string))))) + (eshell-remove-process-entry entry)))))) (defun eshell-process-interact (func &optional all query) "Interact with a process, using PROMPT if more than one, via FUNC.