Subject: Re: bug#61350: Eglot over Tramp freezes with large project

From: Michael Albinus <[email-masked]>
Date: Tue, 07 Mar 2023 15:31:50 +0100

João Távora <[email-masked]> writes:

Hi João,

>> > So maybe you meant:
>> >
>> >    (while (accept-process-output p 0 nil t))
>> >
>> > as suggested in that section?
>>
>> That was my first idea as well. But tramp-accept-process-output itself is
>> called in a loop, so there's no difference in practice[1].
>
> Hmmm, I still don't think they are equivalent.  In tramp-a-p-o with
> TIMEOUT set to nil is where it normally hangs, right?  Well then, if
> it does hang it will _not_ be called in a loop, by definition.

But the hang happens only when there is another process using the same
socket. As soon as such a parallel process is detected, my patch does

--8<---------------cut here---------------start------------->8---
(setq timeout (or timeout 0))
--8<---------------cut here---------------end--------------->8---

No blocking anymore.

>> Pls give my patch testing, in order to see whether Tramp still blocks.
>
> I will do that later.  But 10 out of 10 successes in your testing is
> a pretty solid indication that this is on the right track.

Thanks.

> João

Best regards, Michael.