[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