On 23/11/16 10:39, Eric Abrahamsen wrote:
Luke <mideniko1234-...@yahoo.co.uk> writes:
I have a strange situation on my laptop.
I'm running Ubuntu 16.04, with Emacs 24.5.1. I'm also using the latest
development branch from the org-mode git repository (latest changes
pulled today).
Recently, for some unknown reason, emacs suddenly started to hang on
startup. Placing some output messages in my .emacs file I was able to
narrow it down to this line:
(require 'org)
Loading org-mode hangs Emacs for some reason. If I remove the above
line from .emacs then Emacs will start as normal (although without
org-mode, obviously).
I tried creating a minimal-org.el file with the following contents:
;; activate debugging
(setq debug-on-error t
debug-on-signal nil
debug-on-quit nil)
;; add latest org-mode to load path
(add-to-list 'load-path (expand-file-name "~/elisp/org-mode/lisp"))
(add-to-list 'load-path (expand-file-name
"~/elisp/org-mode/contrib/lisp" t))
And then running:
$ emacs -Q -l minimal-org.el
...but I still get the same result (Emacs hangs when I run `M-x
(require 'org)`).
Can anyone help tell me what's wrong, or suggest how I try and track
down the problem?
You're setting debug-on-quit to nil, but it's likely that setting it to
t is exactly what you need. Toggle it to t, eval (require 'org), then
while it's hung hit C-g. You should get a backtrace showing you what
Emacs was actually doing when you quit.
Eric
Thanks to Eric for the debugging tip. Below is the backtrace that was
produced. It looks like tramp is trying to make some connection to the
host-name "host.does.not.exist" (which will obviously fail).
This makes sense, because when I disable networking then Emacs starts
immediately and doesn't hang. I'm not sure how to fix this though.
=====================================================================
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*> nil
"/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" nil t) ; Reading at
buffer position 7072
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)
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
=====================================================================