[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]



More on that clobbered-fixnum-space bug.
MC:REM;CY11 >  and  MC:REM;CY11 FASL  are the source and compiled code
for the latest version of my program which has an additional trap to
see if the number of bits in a word (computed by HAKMEM shifting) is
out of the range 0 to 36.  It hits this bugtrap rather quickly, indicating
that the masks (all FIXNUMs) or shift-amounts (small FIXNUMs -1 -2 -3 -6
-9 and -18) are clobbered rather quickly.

JCL for making bug strike is:
:LISP
N
(FASLOAD CY11)
T 
^G
(REC-BD-VAL #BD T 4 1)

Changing the ALLOC? answer from N to Y and giving 200000 extra FIXNUM
space doesn't help, the program bombs out when (STATUS SPCSIZE 'FIXNUM)
reaches 14000 just as if the alloc hadn't been done at all.  But giving
an explicit (ALLOC '(FIXNUM (200000 200000 NIL))) after the control-G
just before the call to (REC-BD-VAL ...) causes the bug to go away!!
Size of FIXNUM at the time REC-BD-VAL returns the correct answer (zero)
is about 140000.  I believe strongly this is a GC bug wherein compiled
code doesn't get its registers (pointing to FIXNUM objects) or stacks
(ditto) updated properly when GC is done, or other GC bug.  Anybody wan
to tackle this one?  The fact that it works correctly when given lots
of FIXNUM space gives me confidence it is bug in LISP rather than something
I'm doing dumb, but of course it's still possible...