emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Luke <mideniko1234-org@yahoo.co.uk>
To: emacs-orgmode@gnu.org
Subject: Re: Possible bug: Emacs hangs on (require 'org)
Date: Wed, 23 Nov 2016 10:56:33 +0800	[thread overview]
Message-ID: <o130gt$f3v$1@blaine.gmane.org> (raw)
In-Reply-To: <87oa16x6lw.fsf@ericabrahamsen.net>

On 23/11/16 10:39, Eric Abrahamsen wrote:
> Luke <mideniko1234-org@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
=====================================================================

  reply	other threads:[~2016-11-23  2:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-23  1:31 Possible bug: Emacs hangs on (require 'org) Luke
2016-11-23  2:39 ` Eric Abrahamsen
2016-11-23  2:56   ` Luke [this message]
2016-11-23  3:30     ` Eric Abrahamsen
2016-11-23  2:43 ` Luke
  -- strict thread matches above, loose matches on Subject: below --
2017-01-06 14:30 Martin Zuther

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='o130gt$f3v$1@blaine.gmane.org' \
    --to=mideniko1234-org@yahoo.co.uk \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).