[e-lang] PBC arrives as broken reference, maybe caused by CapTP?

Mark S. Miller markm at cs.jhu.edu
Thu Jan 11 10:59:02 CST 2007


Martin Scheffler wrote:
> When Objects implementing Pass By Construction are passed between
> vats, they arrive as broken references.
> This testcase fails with "__getAllegedType not synchronously callable"
> when obj2 is passed to the new vat.


Thanks for trying out the new PassByConstruction so quickly. The actual 
problem behind the behavior you're seeing is a bug, caused by differences 
between Data-E rules, which we're migrating towards vs. JOSS rules, which 
we're still using within CapTP. (JOSS = Java Object Serialization Streams)

> # in de.flowdev.makeTestObj.emaker
> def makeTestObj implements pbc{
> 
>     to __optUncall() :any {
>                 return [<import>, "get", ["de.flowdev.makeTestObj"]]
>     }

The actual problem here is that the <import> above is a reference to the 
sending vat's import__uriGetter. On arrival, by Data-E rules, and in order to 
be useful at all, it should arrive as a near reference to the receiving vat's 
import__uriGetter. Instead, it arrives as a far reference to the sending vat's 
import__uriGetter. As a result, the "get" call fails, since a far reference is 
not synchronously callable.

This can and will be fixed even while we're still within the JOSS framework.

Diagnosing this bug may help me diagnose another PassByConstruction-triggered 
bug Kevin found that I have yet to figure out. Thanks again for reporting this!

-- 
Text by me above is hereby placed in the public domain

     Cheers,
     --MarkM


More information about the e-lang mailing list