GNU bug report logs - #5705
23.1.93; recursive load error when loading tramp

Previous Next

Package: emacs;

Reported by: Paul Pogonyshev <p.pogonyshev <at> anakreon.net>

Date: Thu, 11 Mar 2010 14:56:02 UTC

Severity: important

Merged with 1529

Fixed in version 24.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 5705 in the body.
You can then email your comments to 5705 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#5705; Package emacs. (Thu, 11 Mar 2010 14:56:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Paul Pogonyshev <p.pogonyshev <at> anakreon.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 11 Mar 2010 14:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Paul Pogonyshev <p.pogonyshev <at> anakreon.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 23.1.93; recursive load error when loading tramp
Date: Thu, 11 Mar 2010 16:27:40 +0200
Severity: important

Occasionally, I "break" Emacs after which it starts printing the
following message in the minibuffer in response to any command
requiring it to open a file:

    require: Recursive load: "/usr/local/share/emacs/23.1.93/lisp/net/tramp.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp-cmds.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp-cmds.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp-cmds.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp-cmds.elc", "/usr/local/share/emacs/23.1.93/lisp/net/tramp.elc"

This includes C-x C-f, C-x C-c and many others.  I.e. after this Emacs
becomes unusable and even impossible to quit cleanly.  I have to kill
it from command line with 'killall emacs'.

I'm pretty certain this is caused by hitting C-g when C-x C-f loads a
directory (I'm using ido-mode, so completions are loaded all the
time).  Looks like some place lacks 'unwind-protect' (or something
else similar to try..finally), so that a feature is marked as loaded
in one place, but not in another.

So, to reproduce:
- enable ido-mode;
- try hitting C-x C-f, navigate into a particularly large directory
  and hit C-g while completion list is being built.

You may need to repeat the second step several times as the bug
doesn't seem to deterministic.

Cannot provide normal standard bug information, because after this
happens practically nothing in Emacs works, including M-x report-bug:
window is opened, but it is empty except for From/To/Subject headers.

This has been happening for quite a lot of time, so this bug is not
something new in recent versions.

Paul





Information forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#5705; Package emacs. (Thu, 11 Mar 2010 16:07:02 GMT) Full text and rfc822 format available.

Message #8 received at 5705 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Paul Pogonyshev <p.pogonyshev <at> anakreon.net>
Cc: 5705 <at> debbugs.gnu.org
Subject: Re: bug#5705: 23.1.93; recursive load error when loading tramp
Date: Thu, 11 Mar 2010 11:06:21 -0500
Paul Pogonyshev <p.pogonyshev <at> anakreon.net> writes:

> So, to reproduce:
> - enable ido-mode;
> - try hitting C-x C-f, navigate into a particularly large directory
>   and hit C-g while completion list is being built.
>
> You may need to repeat the second step several times as the bug
> doesn't seem to deterministic.

Some something like

 M-x ido-mode RET
 C-x C-f /usr/bin/a TAB

should produce the bug?  I haven't been able to see it this way.




Information forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#5705; Package emacs. (Thu, 11 Mar 2010 17:04:02 GMT) Full text and rfc822 format available.

Message #11 received at 5705 <at> debbugs.gnu.org (full text, mbox):

From: Paul Pogonyshev <p.pogonyshev <at> anakreon.net>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: 5705 <at> debbugs.gnu.org
Subject: Re: bug#5705: 23.1.93; recursive load error when loading tramp
Date: Thu, 11 Mar 2010 18:17:44 +0200
Chong Yidong wrote:
> Paul Pogonyshev <p.pogonyshev <at> anakreon.net> writes:
> 
> > So, to reproduce:
> > - enable ido-mode;
> > - try hitting C-x C-f, navigate into a particularly large directory
> >   and hit C-g while completion list is being built.
> >
> > You may need to repeat the second step several times as the bug
> > doesn't seem to deterministic.
> 
> Some something like
> 
>  M-x ido-mode RET
>  C-x C-f /usr/bin/a TAB
> 
> should produce the bug?  I haven't been able to see it this way.

Sorry, I tried now with 'emacs -Q' and found a corrected way:

    M-x ido-mode RET           enable ido
    C-x C-f / /                this makes ido load tramp
    C-g                        abort loading

You need to be quick to hit C-g while tramp is still loading.  After
this file opening stops working just as described, at least here.

I managed to reproduce this three times in a row (each time with a
fresh 'emacs -Q', since the previous becomes useless).

Paul




Information forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#5705; Package emacs. (Thu, 11 Mar 2010 17:37:02 GMT) Full text and rfc822 format available.

Message #14 received at 5705 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Michael Albinus  <michael.albinus <at> gmx.de>
Cc: 5705 <at> debbugs.gnu.org, Paul Pogonyshev <p.pogonyshev <at> anakreon.net>
Subject: Re: bug#5705: 23.1.93; recursive load error when loading tramp
Date: Thu, 11 Mar 2010 12:36:23 -0500
Paul Pogonyshev <p.pogonyshev <at> anakreon.net> writes:

> Sorry, I tried now with 'emacs -Q' and found a corrected way:
>
>     M-x ido-mode RET           enable ido
>     C-x C-f / /                this makes ido load tramp
>     C-g                        abort loading
>
> You need to be quick to hit C-g while tramp is still loading.  After
> this file opening stops working just as described, at least here.

OK, I see the problem.

If you C-g while Tramp is loading, it leaves Tramp in a half-loaded
state, which screws up all subsequent calls to tramp-tramp-file-p (Lisp
backtrace below).  The eval-after-load in tramp.el seems to be the
culprit.

Michael, could you take a look?




Debugger entered--Lisp error: (error "Recursive load" "/home/cyd/emacs/lisp/net/tramp.elc" "/home/cyd/emacs/lisp/net/tramp-cmds.elc" "/home/cyd/emacs/lisp/net/tramp.elc" "/home/cyd/emacs/lisp/net/tramp-cmds.elc" "/home/cyd/emacs/lisp/net/tramp.elc" "/home/cyd/emacs/lisp/net/tramp-cmds.elc" "/home/cyd/emacs/lisp/net/tramp.elc" "/home/cyd/emacs/lisp/net/tramp-cmds.elc" "/home/cyd/emacs/lisp/net/tramp.elc")
  require(tramp)
  require(tramp-cmds)
  (catch (quote tramp-loading) (require feature) (add-hook (quote tramp-unload-hook) (\` ...)))
  (progn (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (if feature (progn (catch ... ... ...) (unless ... ...)))
  (when feature (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (while --dolist-tail-- (setq feature (car --dolist-tail--)) (when feature (catch ... ... ...) (unless ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- ...) feature) (while --dolist-tail-- (setq feature ...) (when feature ... ...) (setq --dolist-tail-- ...)))
  (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...)))
  eval((dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  eval-after-load("tramp" (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  byte-code("\300\301\302\"\210\303\304\305\"\210\306\307\310\"\210\311\312\313\314\315\316\317\320&\207" [add-hook tramp-unload-hook #[nil "\300\301!\205\n\302\301\303\"\207" [featurep tramp-uu unload-feature force] 3] autoload uudecode-decode-region "uudecode" eval-after-load "tramp" (dolist (feature ...) (when feature ... ...)) custom-declare-group tramp nil "Edit remote files with a combination of rsh and rcp or similar programs." :group files :version "22.1"] 8)
  require(tramp)
  require(tramp-cmds)
  (catch (quote tramp-loading) (require feature) (add-hook (quote tramp-unload-hook) (\` ...)))
  (progn (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (if feature (progn (catch ... ... ...) (unless ... ...)))
  (when feature (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (while --dolist-tail-- (setq feature (car --dolist-tail--)) (when feature (catch ... ... ...) (unless ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- ...) feature) (while --dolist-tail-- (setq feature ...) (when feature ... ...) (setq --dolist-tail-- ...)))
  (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...)))
  eval((dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  eval-after-load("tramp" (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  byte-code("\300\301\302\"\210\303\304\305\"\210\306\307\310\"\210\311\312\313\314\315\316\317\320&\207" [add-hook tramp-unload-hook #[nil "\300\301!\205\n\302\301\303\"\207" [featurep tramp-uu unload-feature force] 3] autoload uudecode-decode-region "uudecode" eval-after-load "tramp" (dolist (feature ...) (when feature ... ...)) custom-declare-group tramp nil "Edit remote files with a combination of rsh and rcp or similar programs." :group files :version "22.1"] 8)
  require(tramp)
  require(tramp-cmds)
  (catch (quote tramp-loading) (require feature) (add-hook (quote tramp-unload-hook) (\` ...)))
  (progn (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (if feature (progn (catch ... ... ...) (unless ... ...)))
  (when feature (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (while --dolist-tail-- (setq feature (car --dolist-tail--)) (when feature (catch ... ... ...) (unless ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- ...) feature) (while --dolist-tail-- (setq feature ...) (when feature ... ...) (setq --dolist-tail-- ...)))
  (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...)))
  eval((dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  eval-after-load("tramp" (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  byte-code("\300\301\302\"\210\303\304\305\"\210\306\307\310\"\210\311\312\313\314\315\316\317\320&\207" [add-hook tramp-unload-hook #[nil "\300\301!\205\n\302\301\303\"\207" [featurep tramp-uu unload-feature force] 3] autoload uudecode-decode-region "uudecode" eval-after-load "tramp" (dolist (feature ...) (when feature ... ...)) custom-declare-group tramp nil "Edit remote files with a combination of rsh and rcp or similar programs." :group files :version "22.1"] 8)
  require(tramp)
  require(tramp-cmds)
  (catch (quote tramp-loading) (require feature) (add-hook (quote tramp-unload-hook) (\` ...)))
  (progn (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (if feature (progn (catch ... ... ...) (unless ... ...)))
  (when feature (catch (quote tramp-loading) (require feature) (add-hook ... ...)) (unless (featurep feature) (message "Loading %s failed, ignoring this package" feature)))
  (while --dolist-tail-- (setq feature (car --dolist-tail--)) (when feature (catch ... ... ...) (unless ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- ...) feature) (while --dolist-tail-- (setq feature ...) (when feature ... ...) (setq --dolist-tail-- ...)))
  (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...)))
  eval((dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  eval-after-load("tramp" (dolist (feature (list ... ... ... ... ... ... ...)) (when feature (catch ... ... ...) (unless ... ...))))
  byte-code("\300\301\302\"\210\303\304\305\"\210\306\307\310\"\210\311\312\313\314\315\316\317\320&^G\207" [add-hook tramp-unload-hook #[nil "\300\301!\205\n\302\301\303\"\207" [featurep tramp-uu unload-feature force] 3] autoload uudecode-decode-region "uudecode" eval-after-load "tramp" (dolist (feature ...) (when feature ... ...)) custom-declare-group tramp nil "Edit remote files with a combination of rsh and rcp or similar programs." :group files :version "22.1"] 8)
  tramp-tramp-file-p("/home/cyd/emacs/admin/ChangeLog")
  tramp-find-foreign-file-name-handler("/home/cyd/emacs/admin/ChangeLog")
  tramp-set-auto-save()
  run-hooks(find-file-hook)
  after-find-file(nil t)
  find-file-noselect-1(#<buffer ChangeLog> "~/emacs/admin/ChangeLog" nil nil "~/src/emacs/emacs-23/admin/ChangeLog" (3499012 2054))
  find-file-noselect("/home/cyd/emacs/admin/ChangeLog" nil nil)
  ido-file-internal(raise-frame)
  ido-find-file()
  call-interactively(ido-find-file nil nil)




Forcibly Merged 1529 5705. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Thu, 11 Mar 2010 17:52:02 GMT) Full text and rfc822 format available.

Removed tag(s) moreinfo. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Fri, 12 Mar 2010 17:08:02 GMT) Full text and rfc822 format available.

Information forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#5705; Package emacs. (Sat, 13 Mar 2010 19:55:02 GMT) Full text and rfc822 format available.

Message #21 received at 5705 <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: 5705 <at> debbugs.gnu.org, Paul Pogonyshev <p.pogonyshev <at> anakreon.net>
Subject: Re: bug#5705: 23.1.93; recursive load error when loading tramp
Date: Sat, 13 Mar 2010 20:54:38 +0100
Chong Yidong <cyd <at> stupidchicken.com> writes:

> Paul Pogonyshev  writes:
>
>> Sorry, I tried now with 'emacs -Q' and found a corrected way:
>>
>>     M-x ido-mode RET           enable ido
>>     C-x C-f / /                this makes ido load tramp
>>     C-g                        abort loading
>>
>> You need to be quick to hit C-g while tramp is still loading.  After
>> this file opening stops working just as described, at least here.
>
> OK, I see the problem.

Unfortunately, my machine is too fast to interrupt Tramp during loading.
Or I am too old, or too slow; pick whatever you want.

> If you C-g while Tramp is loading, it leaves Tramp in a half-loaded
> state, which screws up all subsequent calls to tramp-tramp-file-p (Lisp
> backtrace below).  The eval-after-load in tramp.el seems to be the
> culprit.
>
> Michael, could you take a look?

Looks to me like a similar problem as bug#1529 and bug#5448. As already
said there, a clean solution requires a new arrangement of Tramp's
package dependencies. This I would like to take out of Emacs 23.2.

Next days, I'll release Tramp 2.1.18 (this is what is bundled with Emacs
23.2). Afterwards, I'll start working on the pending problems dedicated
for after-the-release. Given, that I'll be offline for 3 weeks (starting
March 20), it will last until mid of April or so.

Best regards, Michael.




Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Fri, 10 Sep 2010 06:37:02 GMT) Full text and rfc822 format available.

Notification sent to Paul Pogonyshev <p.pogonyshev <at> anakreon.net>:
bug acknowledged by developer. (Fri, 10 Sep 2010 06:37:03 GMT) Full text and rfc822 format available.

Message #26 received at 5705-done <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 5705-done <at> debbugs.gnu.org
Subject: Re: bug#5705: 23.1.93; recursive load error when loading tramp
Date: Fri, 10 Sep 2010 02:39:00 -0400
Version: 24.1

2010-09-08  Michael Albinus  <michael.albinus at gmx.de>

	Migrate to Tramp 2.2.  Rearrange load dependencies.
	(Bug#1529, Bug#5448, Bug#5705)




Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Fri, 10 Sep 2010 06:37:03 GMT) Full text and rfc822 format available.

Notification sent to trentbuck <at> gmail.com:
bug acknowledged by developer. (Fri, 10 Sep 2010 06:37:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 08 Oct 2010 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 14 years and 253 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.