unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#5705: 23.1.93; recursive load error when loading tramp
@ 2010-03-11 14:27 Paul Pogonyshev
  2010-03-11 16:06 ` Chong Yidong
  0 siblings, 1 reply; 6+ messages in thread
From: Paul Pogonyshev @ 2010-03-11 14:27 UTC (permalink / raw)
  To: 5705

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







^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#5705: 23.1.93; recursive load error when loading tramp
  2010-03-11 14:27 bug#5705: 23.1.93; recursive load error when loading tramp Paul Pogonyshev
@ 2010-03-11 16:06 ` Chong Yidong
  2010-03-11 16:17   ` Paul Pogonyshev
  0 siblings, 1 reply; 6+ messages in thread
From: Chong Yidong @ 2010-03-11 16:06 UTC (permalink / raw)
  To: Paul Pogonyshev; +Cc: 5705

Paul Pogonyshev <p.pogonyshev@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.






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#5705: 23.1.93; recursive load error when loading tramp
  2010-03-11 16:06 ` Chong Yidong
@ 2010-03-11 16:17   ` Paul Pogonyshev
  2010-03-11 17:36     ` Chong Yidong
  0 siblings, 1 reply; 6+ messages in thread
From: Paul Pogonyshev @ 2010-03-11 16:17 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 5705

Chong Yidong wrote:
> Paul Pogonyshev <p.pogonyshev@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






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#5705: 23.1.93; recursive load error when loading tramp
  2010-03-11 16:17   ` Paul Pogonyshev
@ 2010-03-11 17:36     ` Chong Yidong
  2010-03-13 19:54       ` Michael Albinus
  0 siblings, 1 reply; 6+ messages in thread
From: Chong Yidong @ 2010-03-11 17:36 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 5705, Paul Pogonyshev

Paul Pogonyshev <p.pogonyshev@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)






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#5705: 23.1.93; recursive load error when loading tramp
  2010-03-11 17:36     ` Chong Yidong
@ 2010-03-13 19:54       ` Michael Albinus
  2010-09-10  6:39         ` Glenn Morris
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Albinus @ 2010-03-13 19:54 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 5705, Paul Pogonyshev

Chong Yidong <cyd@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.






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#5705: 23.1.93; recursive load error when loading tramp
  2010-03-13 19:54       ` Michael Albinus
@ 2010-09-10  6:39         ` Glenn Morris
  0 siblings, 0 replies; 6+ messages in thread
From: Glenn Morris @ 2010-09-10  6:39 UTC (permalink / raw)
  To: 5705-done

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)





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-09-10  6:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-11 14:27 bug#5705: 23.1.93; recursive load error when loading tramp Paul Pogonyshev
2010-03-11 16:06 ` Chong Yidong
2010-03-11 16:17   ` Paul Pogonyshev
2010-03-11 17:36     ` Chong Yidong
2010-03-13 19:54       ` Michael Albinus
2010-09-10  6:39         ` Glenn Morris

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).