Subject: Re: 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: Thu, 16 Mar 2023 12:20:22 +0000

Michael Albinus <[email-masked]> writes:

> João Távora <[email-masked]> writes:
>
> Hi,
>
>> 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?
>
> I'm also against using SIGWINCH at this point. It isn't portable, and it
> isn't even known whether it is needed always. The proposed patch wraps
> it by
>
> (when (and (not result) (process-get proc 'shared-socket))
>
> But the reason why result is nil could be simply the case that the
> remote side hasn't something to tell yet, and we need to wait.
>
> And this would complicate the scenario further. We have already a very
> fragile tramp-accept-process-output, which has changed again and again
> ove the last 20 years. I *really* would like to see a simple and robust
> implementation.
>
> My attempt with the additional process property `shared-socket' has
> failed, and I've reverted it.
>
> Pushed to master. The Eglot Tramp tests pass now, so I recommend to
> close this bug.

Michael, now you've brought back the Eglot/Tramp hang of bug#61350!

Really Michael, please consider reverting 0330cff65ae (your latest) and
54ef338ba36 (from two days ago), and going back to the simpler version
that you originally proposed, with just the 'while' added there.

It fixes all this mess.  _Then_ we can go get to thinking about the
"simple and robust" implementation.

João