[Vm-dev] Re: [Pharo-project] VM problem?
Eliot Miranda
eliot.miranda at gmail.com
Fri May 25 18:39:51 UTC 2012
On Fri, May 25, 2012 at 12:57 AM, Fabrizio Perin
<fabrizio.perin at gmail.com>wrote:
> Hi,
> I'm using last Moose build on top of CogVM 2550 and each time I click on a
> method an error pops up (see the attachment). The same problem I have it
> with older builds of Moose but I don't have any problem if I open the same
> image with Cog VM 2540 or CogVM from the Pharo web site.
>
I changed the definition of at: for CompiledMethod to prevent it accessing
bytes outside of the bytecodes part of a compiled method. What's happening
here is that a hash is being derived form the compiled method by looking at
the pointers part of the compiled method (i.e. bytes < aMethod initialPC).
But it is wrong to try and derive a hash from these bytes. Since the GC
can move objects these bytes can change as the GC moves the literals a
method references (unlike the bytes between: aMethod initialPC and: aMethod
size).
Two conclusions:
The solution is to define CompiledMethod>hash such that it does not access
bytes < initialPC. The hash it is inheriting from ByteArray is fine for
ByteArray but not at all OK for CompiledMethod.
The VM is revealing a latent bug, i.e. that on older VMs the system could
be computing a variable hash, and hence result in not-found errors in
certain circumstances, hence the VM is right to impose this stricter bounds
checking.
> I'm on Mac os 10.7.4 and the image is:
>
> Pharo1.4
> Latest update: #14438
>
> Cheers,
> Fabrizio
>
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20120525/ea429285/attachment.htm
More information about the Vm-dev
mailing list