[net.lang.lisp] gcafter behavior

michaelm@bcsaic.UUCP (michael maxwell) (08/20/86)

This is BSD (not Franz Inc.) Franz Lisp, opus 38.91.

I have a large corpus of test data (English sentences) that I let our parser, 
written in Franz Lisp, crunch through in batch mode.  Yesterday
something strange happened: it died in the middle with the error message
"Attempt to allocate beyond static structures", i.e. it ran out of
memory.  It appears that the problem lies in 'gcafter': each time Frantz
does garbage collection, it allocates more memory for the type that caused 
the  garbage collection.  Now this makes sense as long as there's lots of 
memory left, but it seems like it should give up at some point--before 
running out of memory and dying!  Or at least there ought to be a switch.
(I can see that some programs might keep using up space and not create
garbage that can be reclaimed; our program uses lots of list space, but
it can always be reclaimed after each parse is completed.)

I can prevent Lisp from dying by calling 'gc' after it parses each sentence,
but that makes it slower than molasses.  It looks like my best option at
this point is to rewrite 'gcafter'.  Any comments?
-- 
Mike Maxwell
Boeing Artificial Intelligence Center
	...uw-beaver!uw-june!bcsaic!michaelm