Re: poa issue



Hi Michael,

On Wed, 11 Jul 2001, Michael Meeks wrote:

>         Yes. So, the thing is that I think it's reasonable to expect the
> ORB to get this right; if I do:
>
>         PortableServer_POA_deactivate_object (bonobo_poa (), oid, &ev);
> and then:
>
>         PortableServer_ServantBase__fini (&object->servant, &ev);
>
>         I think I should be able to free the servant, since the object is
> deactivated, and the servant is finalized.

	The problem here is that we are finalizing the servant as it
is exectuing a request. If you read 11.3.8.17, you'll see that the
poa is not supposed to complete the object's deactivation until all
requests are completed.

	The correct fix is not to call finalize at all, but let the
POA call it, which it does.

>         so I neither know, nor care much about 'etherialization' and the
> complexities of deactivating the POA object - in fact I'd be quite happy
> if the POA didn't exist at all :-). Either way, I can see 2 solutions.

	Okay, so etherealialization is breaking the bond between
servant and object. This is not supposed to happen until the object
has been deactivated.

>         a) Move the pobj->servant = NULL & list free above the 'use_cnt'
> check[1], perhaps this breaks the spec. ?

	Yes, this would break the spec.

	So the moral of the story is - remove the call to finalize.
The POA will do it.

Good Luck,
Mark.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]