On Nov 30, 2007 2:34 PM, Jerry James <james(a)xemacs.org> wrote:
Hello Shlomo,
On Nov 25, 2007 7:43 AM, Shlomo Tzidkani <shlomot(a)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/
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta