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

lisp bug at Illinois



Someone here found a GC bug in our current LISP (1137!).  I'm
forwarding you his message.

From Tze-Wah Wong[702,207] on October 14, 1978 at 4:16 PM
I found a bug under the following circumstance:
	(1) A compiled function passes a number to either (a) an interpreted
		function, or (b) a function with a SPECIAL argument.
	(2) The argument passing mechanism makes sure that the argument is
		a true number by number-consing
	(3) If this number-cons causes GC, the GC destroyes certain save
		locations and causes an error.

in ONR:LISP.EXE
742114/	push 14,7	;save funct,,lambda-form on p
742116/ movem 6,462	;c(462)=-ve number of arguments
735105/ skipn 1,174	;get a flonum, succeed ?
735106/ jsp 1,752362	;no more flonum, go to gc
735107/			;return from gc, c(462) destroyed !!!!!!!!!!!!
742125/ move 6,462	;restore 6=-ve ac
751136/ move 3,6	;reg 3=-ve number of arg
751137/ addi 3,0(14)	;reg 3 points to funct,,lambda-form
751140/ hrrz 1,0(3)	;reg 1=lambda-form
			;At this point we get garbage as lambda-form

[Forwarded from Tim Finin]


Tim Finin (FININ@MIT-AI)