Subject: bug#73046: 29.4; Emacs 100% CPU usage for several seconds when opening dired buffer over TRAMP

From: Eli Zaretskii <[email-masked]>
Date: Sun, 08 Sep 2024 18:41:20 +0300

> From: Michael Albinus <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Sun, 08 Sep 2024 17:26:40 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> Tramp is in a loop, waiting for results from the remote side. I don't
> >> know how to implement this differently.
> >
> > What kind of loop?  Can you point me to the code which loops there?
> 
> The umbrella function is tramp-send-command. It sends the command to
> remote via tramp-send-string, and waits then for a proper shell prompt
> via tramp-wait-for-output. The latter function calls
> tramp-wait-for-regexp, which loops using tramp-accept-process-output.

Did you try either calling accept-process-output with a non-zero
timeout of, say, 5 msec, or inserting a (sit-for 0.005) into the loop
which calls tramp-accept-process-output?

Waiting for a process to respond should try not to spin without
sleeping for a few milliseconds between polling attempts.