Philipp <p.stephani2@gmail.com> schrieb am Sa., 29. Juli 2017 um 23:08 Uhr:

Create a FUSE mount point, e.g.

cd /tmp
mkdir a a/a b
touch a/a/a
bindfs -f a b

While bindfs(1) is running, cd to the mounted directory in a second
shell:

cd /tmp/b/a

Now kill bindfs, e.g. by hitting ^C in the first shell.  The second
shell will now be in an unmounted directory.  From that directory, start
Emacs:

$ emacs -Q -batch a
Apparent cycle of symbolic links for (unreachable)

or, with stack trace

$ emacs -Q -batch -f toggle-debug-on-error a
Debug on Error enabled globally
...
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a/(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a/(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a/(unreachable)/a/(unreachable)" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a/(unreachable)/a/(unreachable)/a" (-1) (nil))
  file-truename("(unreachable)/a/(unreachable)/a/(unreachable)/a/(unreachable)/a/a")
  find-file-noselect("(unreachable)/a/(unreachable)/a/a")
  #f(compiled-function (displayable-buffers dir line column name) #<bytecode>)((nil) "(unreachable)/a/" (0) (0) "a")
  command-line-1(("-f" "toggle-debug-on-error" "a"))
  command-line()
  normal-top-level()

It seems like the logic for `default-directory' and/or `file-truename'
should be improved for unmounted filesystems.


Here's a patch. With the patch, the output is

 Error getting directory: Transport endpoint is not connected
Warning (initialization): Error setting default-directory
Ignoring relative file name (a) due to nil default-directory