[Openais] totempg reentrancy

Mark Haverkamp markh at osdl.org
Fri Jan 20 15:18:49 PST 2006


On Fri, 2006-01-20 at 15:21 -0700, Steven Dake wrote:
> I found during debugging AMF some strange behavior in the totempg
> layer.  I tracked it down to the fact that totempg_mcast (or msg_mcast)
> is not reentrant, meaning it is not possible to call a mcast from a
> message handler that was delivered a message.
> 
> This happens within the AMF quite often, and may also happen within the
> CKPT and EVT resynchronization.  Muni do you know for sure it happens in
> ckpt resync?
> 
> I think this is something we will have to fix before we finally release
> 0.70.1.
> 
> I have attached a patch which fixes the problem for trunk.  Could we get
> some review then I'll work up something for picacho?
> 
> I have thought through this patch and it appears to solve multiple
> levels of reentrancy as well, but I could use more eyes and brains to
> think about the problem.

How can the code get here and this be true?


if (reentrant_call == 1) {
	goto start_over_reentrant;
}

It looks like if reentrant_call is 1 on entry, it goes to
reentrant_mcast: and reentrant_call is set to zero.
Otherwise, if reentrant_call is set to one before totemmrp_mcast, it is
set back to zero just after the call.


-- 
Mark Haverkamp <markh at osdl.org>




More information about the Openais mailing list