emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Possible bug: Emacs hangs on (require 'org)


From: Luke
Subject: Re: [O] Possible bug: Emacs hangs on (require 'org)
Date: Wed, 23 Nov 2016 10:56:33 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

On 23/11/16 10:39, Eric Abrahamsen wrote:
Luke <address@hidden> 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='address@hidden:%%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='address@hidden:%%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='address@hidden:%%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='address@hidden:%%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='address@hidden:%%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
=====================================================================




reply via email to

[Prev in Thread] Current Thread [Next in Thread]