[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