[armedbear-devel] [armedbear-cvs] r12311 - trunk/abcl/src/org/armedbear/lisp
alessiostalla at gmail.com
Tue Dec 29 00:16:35 UTC 2009
On Tue, Dec 29, 2009 at 12:29 AM, Erik Huelsmann <ehuels at gmail.com> wrote:
> While the fix below does seem to fix slime - on my system, it doesn't
> fix all cases of what we're seeing: infinite recursion in clos.lisp,
> related to initial-discriminating-function.
> My own application suffers from the same issue, even after this fix.
> (just to let you know what our progress is)
Erik, to update you on my own progress:
I found out that the infinite recursion is caused by
initial-discriminating-function being called before the class
standard-generic-function has been installed - (find-class
'standard-generic-function) returns NIL. This means that the branch
that calls std-compute-discr.-function (the base case) never gets to
run, causing an infinite loop.
Now the very strange thing is that the std-gf class is installed by a
static block in StandardClass.java, and that - to my understanding -
should be executed in our case, since with autoload-verbose I see the
; Autoloading org.armedbear.lisp.StandardObjectFunctions ...
early on during the loading of Slime. StandardObjectFunctions refers
to StandardClass, thus it should initialize it.
What's worse, I have discovered that CLOS is entirely broken:
(find-class 'standard-object) -> stack overflow
(defclass c () ()) -> The value NIL is not of type STANDARD-CLASS.
I believe it's a bootstrap problem; something gets called too early,
or too late, or doesn't get called at all.
More information about the armedbear-devel