GC "Heisenberg" problem in latest CVS bootstrap?

Brian Rice water at tunes.org
Sun Dec 5 13:06:35 PST 2004


Thanks for the analysis. This does seem mostly correct. Lee, any 
comments or ideas on design improvements?

On Dec 4, 2004, at 6:37 PM, Tim Olson wrote:
> On Dec 4, 2004, at 12:46 PM, Brian Rice wrote:
>> It could if there excessive slot additions and removals at some 
>> point. I haven't profiled anything to look for this, but 
>> numeric.slate's source itself has no abnormal number of such slot 
>> manipulations (26). I don't think the lexer, parser, or compiler do 
>> this kind of thing dynamically, either.
>
> I don't think there is anything special about "numeric.slate", other 
> than it is large (so it shows up dramatically when it takes a long 
> time to process), and during my build that's where the free space 
> drops to a very small size.   During processing it spent > 90% of its 
> time in garbage collection, but GC always found enough free that it 
> didn't trigger a heap growth.
>
> To test the idea that it is simply the free space (or more precisely, 
> the lack thereof) that is causing this, I performed a large dummy 
> allocation just before the bootstrap build:
>
> 	Array newSize: 5000000.
>
> The build went much faster; in particular, processing of 
> "numeric.slate" was easily 10x faster.
>
> After a number of builds I've not seen a segmentation violation like I 
> saw a couple of times during the "slow" build, so I've not been able 
> to track down the root cause of that, but I suspect that it was caused 
> by some strange condition during the excessive GC.
>
> I think Attila Lendvai's suggestion of triggering early heap growth 
> when the free space reclaimed drops below a particular level is a good 
> one.

--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/




More information about the Slate mailing list