[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