7

I toggled the debug-on-error and debug-on-quit options, then press C-g when Emacs suspend. Got this error output:

Debugger entered--Lisp error: (quit)
  call-process("ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist")
  (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'"))))
  (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn (setq result ...)))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
  (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn (setq result "-o ControlMaster=auto")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result ...) (setq result ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))))
  (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char ...) (if ... ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char ...) (if ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))))
  (progn (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char ...) (if ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...))))))))
  (condition-case nil (progn (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))) (if (zerop (length result)) nil (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))) (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))))))) (error nil))
  (let ((result "") (case-fold-search t)) (condition-case nil (progn (if (executable-find "ssh") (progn (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))) (if (zerop (length result)) nil (let (...) (save-current-buffer ... ...)) (let (...) (save-current-buffer ... ...)))))) (error nil)) result)
  (defvar tramp-ssh-controlmaster-options (let ((result "") (case-fold-search t)) (condition-case nil (progn (if (executable-find "ssh") (progn (let (...) (save-current-buffer ... ...)) (if (zerop ...) nil (let ... ...) (let ... ...))))) (error nil)) result) "Call ssh to detect whether it supports the Control* arguments.\nReturn a string to be used in `tramp-methods'.")
  eval-buffer(#<buffer  *load*-504950> nil "/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" nil t)  ; Reading at buffer position 7082
  load-with-code-conversion("/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" "/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" nil t)
  #<subr require>(tramp-loaddefs nil nil)
  ad-Advice-require(#<subr require> tramp-loaddefs)
  apply(ad-Advice-require #<subr require> tramp-loaddefs)
  require(tramp-loaddefs)
  byte-code("\300\301!\207" [require tramp-loaddefs] 2)
  byte-code("\300\301\302\303#\210\300\304\305\306#\210\300\304\307\306#\210\300\304\310\306#\210\300\304\311\306#\210\300\304\312\306#\210\300\304\313\306#\210\300\314\315\316#\210\300\317\320\316#\210\300\304\321\306#\210\300\322\323\306#\210\300\324\325\306#\210\300\322\326\306#\210\300\327\330\316#\210\300\331\332\303#\210\300\331\333\303#\210\300\331\334\303#\210\300\331\335\303#\210\300\331\336\303#\210\300\337\340\341#\210\342\343!\203\206

And ssh daemon also prompt for password through program ksshaskpass: Here is the screenshot.

ssh askpass screenshot

6

Similar to Emacs bug#20015, this can be avoided by setting tramp-ssh-controlmaster-options before loading tramp.

(setq tramp-ssh-controlmaster-options
      "-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no")
(require 'tramp)

Or with use-package:

(use-package tramp
  :init (setq tramp-ssh-controlmaster-options
              "-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no"))

Although getting a password prompt for a non-existing host seems like a bug in your ssh setup to me.

0

I wrap tramp configs with use-package. So it caused this error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.