[armedbear-devel] debugAssert again
Mark Evenson
evenson at panix.com
Wed May 19 23:20:30 UTC 2010
On 5/10/10 3:40 PM, Alan Ruttenberg wrote:
> ; Loading #P"/Users/alanr/.cache/common-lisp/armedbear-0.20.0-dev-fasl36-darwin-java-1.6/Users/alanr/repos/lsw2/trunk/util/encapsulate.abcl"
> ...
> ABCL Debug.assertTrue() assertion failed!
> java.lang.Error: ABCL Debug.assertTrue() assertion failed!
> at org.armedbear.lisp.Debug.assertTrue(Debug.java:46)
> at org.armedbear.lisp.Package.shadowingImport(Package.java:601)
> at org.armedbear.lisp.PackageFunctions$9.execute(PackageFunctions.java:186)
> at org.armedbear.lisp.Primitive.execute(Primitive.java:118)
[…]
> This seems to be where I'm calling shadowing import. However a small
> file with just this doesn't trigger the bug, nor does it seem to
> happen on all loads.
I was able to reliably reproduce by attempting to load the same
SHADOWING-IMPORT statement more than once in an ABCL session, so I
[fixed that problem in r12712][1]. Hopefully this corresponds to the
same problem reported, although I don't understand how it couldn't have
been triggered reliably in Alan's usage, so that is slightly bothersome.
If someone can double-check my logic here, or provide a
counter-example to show that this has not addressed the bug Alan
encountered, I would appreciate it.
[1]: http://trac.common-lisp.net/armedbear/changeset/12712
I also [updated the analysis on inability of ABCL to redefine packages
by repeated DEFPACAKGE invocations][2], as it seems from a reading of
SBCL's implementation that "all" we would have to do to gain this
ability would be to create a mutex for package access, and do a bit of
error checking/warning generation for various permutations of the two
package definitions. Unless I am missing something in my analysis, this
change would be a fairly easy "low hanging fruit" problem for someone
interested in contributing to ABCL.
[2]: http://trac.common-lisp.net/armedbear/ticket/16
As I noted in ticket #16, until the DEFPACKAGE problem is addressed, it
might be nice to warn the user that a redefinition is being ignored, but
since the base boot sequence does not tolerate warnings and includes
DEFPACKAGE reinvocations, throwing a SimpleWarning via Lisp.error()
didn't work out very well. Maybe I misundertand something?
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
More information about the armedbear-devel
mailing list