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
|