Subject: Re: bug#64124: 29.0.91; Loading ‘tramp’unconditionally loads ‘ls-lisp’

From: Sebastian Miele <[email-masked]>
Date: Sat, 17 Jun 2023 18:35:42 +0200

>> However, another problem came to my attention (still with just emacs -Q
>> from commit c8357582389 (emacs-29 branch from last thursday) + your
>> patch):
>>
>> When I try to find a file starting with "/ssh:user@host:", Emacs starts
>> using 100 % CPU and hangs.  The same with "sshx" works fine.  I did not
>> try without the patch, yet.  I am currently compiling the most recent
>> emacs-29 without the patch, and will send a quick note on what happens
>> there.
>
> Pls set tramp-verbose to 10, and rerun your test. There will be a Tramp
> debug buffer, which tells us what happens.

In the mean time, I also tried without the patch applied.  The same
there.  And now, with the most recent Emacs 29 (0154f5885e3) including
your patch, by running

  rm -rf ~/.emacs ~/.emacs.d && \
  ~/usr/emacs/0/29/0/src/emacs -Q \
  --eval '(setq native-comp-jit-compilation nil tramp-verbose 10)' &

and then ‘C-x C-f’ on "/ssh:w@wolke:".

After a bit of waiting and 100 % CPU, the buffer ‘*Messages*’ contains:

  For information about GNU Emacs and the GNU system, type C-h C-a.
  Waiting for git... [2 times]
  Tramp: Opening connection nil for w@wolke using ssh...failed
  Tramp: Opening connection nil for w@wolke using ssh...
  Timeout reached, see buffer ‘*tramp/ssh w@wolke*’ for details
  Tramp: Opening connection nil for w@wolke using ssh...failed
  tramp-error: Timeout reached, see buffer ‘*tramp/ssh w@wolke*’ for details

However, buffer ‘*tramp/ssh w@wolke*’ does not exist.

‘*debug tramp*’ contains:

  backtrace()
  tramp-error(nil file-error "Timeout reached, see buffer ‘*tramp/ssh w@wolke*’ ...")
  tramp-signal-hook-function(file-error ("Timeout reached, see buffer ‘*tramp/ssh w@wolke*’ ..."))
  signal(file-error ("Timeout reached, see buffer ‘*tramp/ssh w@wolke*’ ..."))
  tramp-maybe-open-connection((tramp-file-name "ssh" "w" nil "wolke" nil "" nil))
  tramp-send-command((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "echo ~ 2>/dev/null; echo tramp_exit_status $?")
  tramp-send-command-and-check((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "echo ~")
  tramp-sh-handle-get-home-directory((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "")
  apply(tramp-sh-handle-get-home-directory ((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) ""))
  tramp-sh-file-name-handler(tramp-get-home-directory (tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "")
  apply(tramp-sh-file-name-handler tramp-get-home-directory ((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) ""))
  tramp-file-name-handler(tramp-get-home-directory (tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "")
  tramp-get-home-directory((tramp-file-name "ssh" "w" nil "wolke" nil "" nil) "")
  tramp-sh-handle-expand-file-name("/ssh:w@wolke:" nil)
  apply(tramp-sh-handle-expand-file-name ("/ssh:w@wolke:" nil))
  tramp-sh-file-name-handler(expand-file-name "/ssh:w@wolke:" nil)
  apply(tramp-sh-file-name-handler expand-file-name ("/ssh:w@wolke:" nil))
  tramp-file-name-handler(expand-file-name "/ssh:w@wolke:" nil)
  expand-file-name("/ssh:w@wolke:")
  find-file-noselect("/ssh:w@wolke:" nil nil t)
  find-file("/ssh:w@wolke:" t)
  funcall-interactively(find-file "/ssh:w@wolke:" t)
  command-execute(find-file)

Apart from that, there is a really long buffer ‘*debug tramp/ssh
w@wolke*’ with 48 MiB of content.  In the hope that I do not publicly
expose sensible information, I attached it to this mail.