On Fri, May 23, 2008 at 09:11:14AM -0700, P wrote: > When I do that, wouldn't the parent process/contract inherit the > contract? That's what I'm seeing now.
No, it shouldn't. The parent contract's owner will inherit the child contracts if the child contract owners exit, but orphaned contracts cannot be inherited. At least that's my understanding. Here's what $SRC/uts/common/os/contract.c has to say about it: /* * contract_abandon * * Abandons the specified contract. If "explicit" is clear, the * contract was implicitly abandoned (by process exit) and should be * inherited if its terms allow it and its owner was a member of a * regent contract. Otherwise, the contract type's abandon entry point * is invoked to either destroy or orphan the contract. */ int contract_abandon(contract_t *ct, proc_t *p, int explicit) And looking at contract_adopt(), I see that it will only adopt contracts with ct_state == CTS_INHERITED, whereas abandoned contracts get ct_state == CTS_ORPHAN. Of course, the manpage for ctrun is not at all clear on this. Nico --