Subject: bug#62194: 30.0.50; Two Eglot-over-Tramp tests are failing on master, passing on emacs-29

From: João Távora <[email-masked]>
Date: Wed, 15 Mar 2023 20:45:47 +0000

On Wed, Mar 15, 2023 at 8:31 PM <[email-masked]> wrote:

>         (dolist (p (delq proc (process-list)))
>           (when (tramp-file-name-equal-p v (process-get p 'vector))
> THIS -->    (accept-process-output p 0 nil t))))
>
> I'm somewhat against these additional accept-process-output calls. While
> we do limit them to processes from the same ssh connection, I'd argue
> that usually, such processes aren't really related to the main tramp ssh
> process. They could be a random *shell* process that doesn't really
> belong to tramp.el any more IMO. Or in this case, eglot's jsonrpc
> process.

I'm "against" this too, but hard facts here trump arguments and opinion.
This is exactly what fixes the ControlMaster hang, that's well understood,
and is really intended. It brings about some other failures but I've just
confirmed that if you put

   (while (accept-process-output p 0 nil t))

then all's well.

Of course, it's only _one_ of the ways to fix the problem.  If you have another
more elegant one, but I don't know if signals is a great one.  I'd guess
SIGWINCH to be somewhat limited in platform support, right?

João