[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: JPG at MIT-MC
- From: Robert W. Kerns <RWK at MIT-MC>
- Date: Wed, 31 Dec 80 10:40:00 GMT
- Cc: BUG-COMPLR at MIT-MC, BUG-LISP at MIT-MC
- Original-date: 31 December 1980 05:40-EST
Date: 30 December 1980 06:14-EST
From: Jeffrey P. Golden <JPG at MIT-MC>
To: BUG-COMPLR at MIT-MC
cc: JPG at MIT-MC
Doing the following gives ;IMPROPER USE OF MACRO - EVAL :
CL^K ^G (LOAD '|JPG;CHOMP|) (CHOMP)
RWK looked at this a few days ago, and a likely theory is that the
call to (INITIALIZE) is REMOBing something needed by the FORMAT package.
Anyway something within the FORMAT package ends up pointing into the
freelist, leading to the above error condition.
I'm not 100% clear as to what is happening here, but it IS clear that symbols
are getting bashed that have no right to be bashed. While looking at various
SY2 blocks, I found one symbol with a PNAME that ended in IN0 instead of NIL!
Other than that, I found a number of other symbols with PNAME's which pointed
to things they shouldn't, all with the Compiled-Code-Needs-me bit set. My
theory is that the GC collects symbols with SY.CCN set, if they're not pointed
to by any obarray. I can't find anything to contradict this in the code. But
there's nothing to say the compiled code in question isn't still referenced
just because it references a symbol not on any obarray.
Just for the record, the function referencing the symbol is
FORMAT-FROBNICATE-LISP-OBJECT, the symbol bashed is FMT-FROB/|, and the error
message is purest nonsense. If you APPLY the former FMT-FROB/| (it now looks
something like |nv|), it complains about illegal use of
a MACRO, while if you look at it's PLIST, it may be GUBBISH, but nowhere is
there a MACRO property...)