Subject: 28.1.50; No directory error in comp-run-async-workers

From: Juri Linkov <[email-masked]>
Date: Tue, 31 May 2022 20:31:36 +0300

0. emacs -Q
1. C-x C-f emacs/lisp/s TAB M-v

Then after switching to the Completions window
after a short delay this error is raised:

Debugger entered--Lisp error: (file-missing "Setting current directory" "No such file or directory" "emacs/lisp/s/")
  make-process(:name "Compiling: emacs/lisp/net/goto-addr.el" :buffer #<buffer *Async-native-compile-log*> :command ("emacs/src/emacs" "--batch" "-l" "/tmp/emacs-async-comp-goto-addr-cVqUYL.el") :sentinel #f(compiled-function (process event) #<bytecode -0x812502d31259a48>) :noquery t)
  comp-run-async-workers()
  #f(compiled-function (process event) #<bytecode -0xb3837fe88441506>)(#<process Compiling: emacs/lisp/emacs-lisp/bytecomp.el> "finished\n")
  completing-read-default("Find file: " read-file-name-internal file-exists-p confirm-after-completion "emacs/lisp/" file-name-history "emacs/lisp/" nil)
  read-file-name-default("Find file: " nil "emacs/lisp/" confirm-after-completion nil nil)
  read-file-name("Find file: " nil "emacs/lisp/" confirm-after-completion)
  find-file-read-args("Find file: " confirm-after-completion)
  command-execute(find-file)

This is because default-directory is set in the Completions buffer
to a non-existent "emacs/lisp/s/" from incomplete minibuffer input.
And comp-run-async-workers fails to make a process in that non-existent dir.

So here are two problems: why completion sets default-directory to non-existent dir,
and why comp-run-async-workers tries to run a process in such arbitrary invalid dirs.