[omniORB] Possible deadlock / hang in wait_for_detached_objects()
Duncan Grisby
duncan at grisby.org
Wed Feb 11 16:09:54 GMT 2004
On Friday 23 January, Harri Pasanen wrote:
> I run into situation where an application sometimes hung at exit, and
> traced it to the following call sequence:
>
> omniOrbPOA::deactivate_object(const PortableServer::ObjectId& oid)
> -> calls detached_object();
> omniOrbPOA::lastInvocationHasCompleted(omniLocalIdentity* id)
> -> calls servant->_remove_ref();
> -> calls met_detached_object();
>
> The servant->_remove_ref(); can throw an exception, in my case it was
> CORBA::OBJECT_NOT_EXIST, and as a result met_detached_object() was
> never called, and pd_nDetachedObjecs was not decremented.
I don't think it's valid for _remove_ref to throw exceptions. However,
I agree that omniORB should be robust against the possibility that it
might, so I've checked in a change that calls met_detached_object even
if _remove_ref throws.
Cheers,
Duncan.
--
-- Duncan Grisby --
-- duncan at grisby.org --
-- http://www.grisby.org --
More information about the omniORB-list
mailing list