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?