[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