[Vm-dev] Re: Problem with alien callbacks

Eliot Miranda eliot.miranda at gmail.com
Thu Mar 31 15:44:35 UTC 2011


Hi Javier,

On Thu, Mar 31, 2011 at 6:11 AM, Javier Pimás <elpochodelagente at gmail.com>wrote:

> Hi, we are having a problem with callbacks in alien and we would like to
> see if we are doing something wrong or if it is a bug in the implementation
> (for the standard old vm).
>
> We are receiving the callback just in the middle of a primitiveExternalCall
> (actually to a function that will fail because the plugin is not present,
> but i don't think that's important). We pinned it to occur always in the
> same line, which is
>
> longAtput((lit + (BASE_HEADER_SIZE)) + (2 << (SHIFT_FOR_WORD)), ConstZero);
>
> of primitiveExternalCall. When the callback occurs, the thunkEntry is
> called, which if we understand correctly, saves the active context and runs
> the interpreter by calling sendInvokeCallbackStackRegistersJmpbuf. The
> problem is that things like messageSelector and lkupClass, which are global
> variables are not saved while saving the context, and when the callback
> returns, the last line of primitiveExternalCall,
>
> rewriteMethodCacheSelclassprimIndex(messageSelector, lkupClass, 0);
>
> puts a 0 in the wrong place. Also, probably as las message sent
> was primReturnFromContext:through: (because we just returned from the
> context), we get a primitiveFailed, but not for the original called function
> but for primReturnFromContext:through:.
>
> What do you think? are we missing something?
>

Looks like a bug to me.  I think
the rewriteMethodCacheSelclassprimIndex(messageSelector, lkupClass, 0); line
needs to be moved before the call.  I'll take a look soon.


>
> Regards,
>             Javier.
>
>
> --
> Javier Pimás
> Ciudad de Buenos Aires
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110331/f4634cb4/attachment.htm


More information about the Vm-dev mailing list