[Vm-dev] Re: [Pharo-fuel] [Pharo-dev] Corrupt BlockClosure

Eliot Miranda eliot.miranda at gmail.com
Mon Jun 10 03:39:53 UTC 2013


On Sun, Jun 9, 2013 at 12:38 PM, Max Leske <maxleske at gmail.com> wrote:

>
> I still can't tell you how the closure become corrupted but I now know how
> to get rid of it. I'm also pretty sure that closures work fine (as you say)
> and that I probably mistook the same corrupt instance for different
> instances.
>

Yes, but can you see how Fuel can construct bad instances?  Is so, you must
see that Fuel needs fixing.


>
> Cheers,
> Max
>
> > How does that happen?  It doesn't happen in normal use.  I can see how
> Fuel
> > does it.  I can't see how non-Fuel use would do it (other than deliberate
> > construction).  A closure is created by evaluating the push-closure
> > bytecode in a specific method, and when this closure is created, it
> refers,
> > through its outer context to the method object containing the evaluated
> > push-closure bytecode.  Since the closure's startpc is derived from the
> pc
> > of the push-closure bytecode, there is always a match.
> >
> > However, when Fuel serializes (IIRC) it serializes a *reference* to a
> > method in the form of a class-name,selector pair, and this approach can
> > obviously yield an invalid method.
> >
> > therefore I think it much more likely that what you;re seeing is a result
> > of a bug in Fuel than some systemic problem with closures.
>



-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130609/3c15a435/attachment.htm


More information about the Vm-dev mailing list