In one Vat I export a URI to a PassByCopy object (like 3). In a second Vat
I import the URI and make a SturdyRef, "sr". If I then say "sr liveRef"
(the operation that used to be "sr followRef") I get back a DEFERRED
reference as expected. (In particular, a DEFERRED proxy, as expected.)
However, if I wait, it does not resolve to a LOCAL reference to a local
copy of the PassByCopy object, as it must.
Since I've already seen that optimistic return results do resolve
correctly, I tried and found that "sr liveRef <- yourself" acts like "sr
liveRef" should act. Therefore, I've "repaired" this bug for the moment by
replacing the following method in SturdyRef
public Object liveRef() {
return myRegistrar.lookupReference(mySearchPath, myObjectID);
}
with
public Object liveRef() {
Object result = myRegistrar.lookupReference(mySearchPath, myObjectID);
return E.send(result, "yourself");
}
While this works in all cases I've thought to test, I'm concerned that I'm
only hiding the symptoms of a deeper bug. What's the story? Where should
I be looking?