Subject: C-x b became unusable (ido, recentf, tramp)

From: Felicián Németh <[email-masked]>
Date: Mon, 18 Feb 2019 17:58:22 +0100

I had a problem, which can be reproduced to some extent with the
following snippet.  (emacs -Q -l /tmp/bug.el)

   (require 'recentf)
   (setq recentf-save-file "/tmp/bug-recentf")
   (setq recentf-list '("/ssh:localhost#2222:~/a.txt"))
   (setq ido-use-virtual-buffers t)
   (setq ido-save-directory-list-file "/tmp/bug-ido.last")
   (recentf-save-list)
   (ido-mode t)
   (ido-switch-buffer) ; Simulating C-x b

However, that doesn't explain how that entry ended up in my
recentf-save-file.  I'm guessing I opened many tramp files in a
virtual machine, and after I had halted the virtual machine,
emacs wanted to convert the file names to absolute paths.
Strangely,
(get-file-buffer "/ssh:localhost#2222:~/a.txt") and
(expand-file-name "/ssh:localhost#2222:~/a.txt") fail, but
evaluating them the second time, they succeed,  but
expand-file-name returns a wrong value, i.e,

(expand-file-name "/ssh:localhost#2222:~/a.txt")
   =>  error
(expand-file-name "/ssh:localhost#2222:~/a.txt")
   =>  "/ssh:localhost#2222:~/a.txt"

"emacs -Q -l /tmp/bug.el" reproduces the problem with version
25.1.1 and a recent 27.0.50 as well, but I think it was former
who originally wrote the problematic entry into the
recent-save-file.

Thank you.