Squeak map problems under Gentoo linux

Colin Putney cputney at wiresong.ca
Sat Dec 11 18:04:32 UTC 2004


C. David Shaffer wrote:
> Tim Rowledge wrote:
> 
>> The debug log shows clear evidence of the infamous 'object memory has
>> escaped the 2Gb playroom' problem.
 >
> But it happens on a fresh 3.7 image.  In fact, the log I posted was from 
> an out-of-the-box image having done nothing but navigated the menus to 
> the SqueakMap package loader.  This seems to be a hint that it is a VM 
> problem...maybe something's going wrong during my VM builds.  I'll 
> install Ian's stock VM and see if that makes a difference.  Thanks.

David,

The bug Tim is talking about is indeed a VM bug. What happens is that 
the VM (sometimes?) treats pointers to objects as signed integers. This 
works as long as the address of the object is less than 2GB - ie, the 
highest bit of the pointer isn't set. Beyond that limit, the VM attempts 
to do "pointer arithmetic" involving negative numbers, which produces 
incorrect results.

This is a fairly deep-seated bug in the core VM, nothing to do with the 
platform-specific stuff or compilation options. The only work around is 
to arrange for your OS to allocate memory below the 2GB threshold. It's 
kind of tricky and I can't give you any advice for doing it beyond 
searching the list archives - others have run into this.

The real fix would be to go through the VM sources and tighten up the C 
types used for OOPs. Since Ian has already done something along these 
lines in order to distinguish OOPs from ints (for 64-bit support) it may 
have the side effect of fixing this bug.

Hope this clears things up.

Colin




More information about the Squeak-dev mailing list