Re: SturdyRefs and boot-comm (hangs)

Kevin Reid <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Mar 10, 2010, at 14:44, Thomas Leonard wrote:

> SturdyRefs are not PassByProxy, but BootRefHandler doesn't know how to
> send them, so it pretends they are:
> [...]
> But in the constructor, only PassByProxy objects get an identity:
> [...]
> This causes a <Promise> to be sent. The receiver calls
> <Promise>.__whenMoreResolved, but when the SturdyRef tries to send
> itself back in the reply, it gets turned into a promise again, so the
> receiver calls __whenMoreResolved again, forever.

I agree that the boot-comm system shouldn't hang like this, bit I  
don't have the knowledge to judge your analysis or suggest how to fix  
this immediately.

As a pragmatic fix, I suggest you use the virtualize/1 operation on  
seedVat; it causes the user-level communication to occur over CapTP  
rather than boot-comm.

In general, boot-comm is really only for bootstrapping purposes,  
because 3-way reference shortening can only occur over a homogeneous  
comm system. If your process has vats A and B communicating over boot- 
comm, and B has a CapTP reference to C which it passes to A, it is  
impossible or impractical to shorten that into a direct CapTP  
reference from A to C; MarkM and I spent an hour some time ago working  
this out.

For cheap yet complete inter-vat communication, what *is* practical is  
to make sure CapTP doesn't use crypto when communicating between vats  
in the same process or OS -- not yet implemented.

-- 
Kevin Reid                                  <http://switchb.org/kpreid/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.