xemacs stuck

Jerry James james at xemacs.org
Fri Nov 30 17:45:01 EST 2007


On Nov 30, 2007 2:34 PM, Jerry James <james at xemacs.org> wrote:
> Hello Shlomo,
>
> On Nov 25, 2007 7:43 AM, Shlomo Tzidkani <shlomot at its-tel.com> wrote:
> > When activate ecb I got the following errors:
> >
> > "error in  pre-gc-hook",  "error in post-gc-hook"
> >
> >
> >
> > And the Xemacs is stuck
> >
> >
> >
> > Please advice
>
> Ironically, it looks like advice is the problem!  ECB is trying to put
> advice after current-window-configuration, but is failing.  I don't
> yet know why it is failing.  In the meantime, you will have to kill
> your XEmacs process by hand.  I recommend not using ECB until we can
> figure out what the problem is.

Here's how it fails.  Way down in ecb-activate--impl (ecb.el) is a
block that starts:

(when ecb-running-xemacs
  (let ((dummy-buf-name " *dummytogetglobalmap*"))
    (save-excursion
      (set-buffer (get-buffer-create dummy-buf-name))
      (add-submenu nil ecb-minor-menu)
      (kill-buffer dummy-buf-name)))

That kill-buffer invocation kicks off the fun.  ECB put a function,
ecb-kill-buffer-hook (ecb.el), on kill-buffer-hook.  Execution gets
almost all the way to the end of that function, where it calls
ecb-get-current-visible-ecb-buffers (ecb-layout.el), to make sure we
aren't killing any special ECB buffers.  That calls
ecb-canonical-ecb-windows-list (ecb-layout.el) to give us a list to
map window-buffer over.  That calls ecb-canonical-windows-list
(ecb-util.el) to give us a list of all windows from which we can
remove the non-ECB windows.  That calls ecb-window-list (ecb-util.el)
on the ECB frame.

Note that the function ecb-window-list calls window-list if
ecb-running-emacs-21; otherwise, it executes its own version of
window-list.  Since we have window-list, we could throw that all away
and just call window-list, too.  Unfortunately, that doesn't help with
the current bug.

The replacement window-list code in ecb-window-list calls
save-window-excursion, which calls current-window-configuration, on
which ECB has put an after advice!  So off to ecb-layout.el we go,
where we see that if (not ecb-windows-hidden), we call
ecb-get-current-visible-ecb-buffers.  Ummm... haven't we been here
before?  And around and around and around we go until the stack is
exhausted.  Using our own window-list function does not help, because
it also calls save-window-excursion, which calls
current-window-configuration.
-- 
Jerry James
http://loganjerry.googlepages.com/



More information about the XEmacs-Beta mailing list