[Vm-dev] Re: A possible Cog bug

Levente Uzonyi leves at elte.hu
Mon Apr 25 15:55:59 UTC 2011


On Mon, 25 Apr 2011, Frank Shearar wrote:

>
> On 2011/04/25 04:35, Levente Uzonyi wrote:
>> On Sun, 24 Apr 2011, Levente Uzonyi wrote:
>> 
>> snip
>> 
>>> it didn't work for some reason. The execution always ran into the
>>> error 'computation has been terminated' in MethodContext >>
>>> #cannotReturn: and the method context (which stitches the continuation
>>> onto the stack) was broken (nil in temporaries where should be non nil
>>> values). Finally I tried it in SqueakVM instead of Cog and it worked.
>>> The tests are green, the example code
>> 
>> I tracked down this issue a bit more. The cause of the problem is that
>> with CogVM the pc of thisContext is being set to nil when the execution
>> leaves the context. This means, that [thisContext copy] will not be able
>> to copy the pc of the context:
>> 
>> { thisContext pc. thisContext copy pc } "==> #(23 nil)"
>
> That would explain why I didn't come across it: I wrote the library on the 
> SqueakVM.

Not exactly. Your serialization method works with Cog, because the problem 
occurs when #copy is sent to thisContext. Since your method is serializing 
the contexts and all their variables separately to a collection, 
therefore it works.


Levente

>
> frank
>


More information about the Vm-dev mailing list