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

From: Michael Albinus <[email-masked]>
Date: Mon, 27 Feb 2023 08:47:30 +0100

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

Hi João,

>>>> It wasn't lost. The process output was retrieved and placed into the
>>>> Tramp buffer, w/o Tramp's interaction.
>
> Can you confirm that you no longer believe this to be the case?

I don't know whether it was Tramp's accept-process-output call, or
another one. But yes, this doesn't seem to be a problem.

>> But yesterday's debugging has shown, that ssh ControlMaster
>> seems to be guilty; it cannot handle large amount of data reliably.
>
> So maybe one should disable it by default.

No, not by default. It improves performance.

> How does one disable it? I have trouble understanding from
> tramp-use-ssh-controlmaster-options and
> tramp-ssh-controlmaster-options.

RTFM. The Tramp manual says

--8<---------------cut here---------------start------------->8---
   If the ‘~/.ssh/config’ file is configured appropriately for the above
behavior, then any changes to ‘ssh’ can be suppressed with this ‘nil’
setting:

     (customize-set-variable 'tramp-use-ssh-controlmaster-options nil)

   This should also be set to ‘nil’ if you use the ‘ProxyCommand’ or
‘ProxyJump’ options in your ‘ssh’ configuration.
--8<---------------cut here---------------end--------------->8---

I will extend this, descibing possible problems with a large amount of
data.

>> Yes, that's the place. Tramp waits for a trailing shell prompt that it
>> tells that everything has been sent from remote. But this shell prompt
>> didn't arrive, and Tramp hangs in waiting for this.
>
> So the problem is now that the shell prompt didn't arrive after all,
> because of controlmaster, not because of jsonrpc.el.  Can you confirm
> this?

Yes.

> João

Best regards, Michael.