[omniORB] Compiler bug affecting omniORB 3.0.x on openVMS (and osf1?) Alpha

Bruce Visscher visschb@rjrt.com
Wed, 28 Feb 2001 18:23:41 -0500


Fellow omniORBers,

Maurizio Panella has pointed out a bug that affects users of omniORB
3.0.x on openVMS Alpha.  Basically, if you startup eg3_srv then shut it
down (creating a reference to an object that no longer exists) then
eg3_clt will hang (hibernate) indefinitely if you run it.

I have found the culprit to be that the client attempts to (erroneously)
handle the resulting COMM_FAILURE as a forwarded location (it calls
omni::revertToOriginalProfile then _omni_callTransientExceptionHandler
which succeeds so it keeps repeating).  This is erroneous since it isn't
logically possible for the location forward bit to be set at this
point.  I think the optimizer is being too agressive and reordering
things.

If you add an initializer like this (in omniObjRef.cc):

void
omniObjRef::_locateRequest()
{
  int retries = 0;
  int fwd=0;	// added initializer

then the problem goes away.  Also, compiling the library without debug
fixes the problem.

I wonder if there's anyone running on tru64 that uses the same compiler
(Compaq C++ 6.2) that might be willing to try this?

Bruce
-- 

Bruce Visscher                                        visschb@rjrt.com
CONFIDENTIALITY NOTE:  This e-mail message, including any attachment(s), contains information that may be confidential, protected by the attorney-client or other legal privileges, and/or proprietary non-public information.  If you are not an intended recipient of this message or an authorized assistant to an intended recipient, please notify the sender by replying to this message and then delete it from your system.  Use, dissemination, distribution, or reproduction of this message and/or any of its attachments (if any) by unintended recipients is not authorized and may be unlawful.