[omniORB] ssl_echo/eg2_clt example throws an unknown exception on exit

Vladimir Panov gbr@netel.bg
Fri Nov 22 11:40:02 2002


cp@sophos.com wrote:

>I am experiencing a problem using omniORB 4.0.0 and openssl 0.9.6b. When I 
>run the ssl_echo examples the client throws and exception on exit. The 
>exception is generated somewhere inside the orb->destroy() call. I have 
>included logs from eg2_impl and eg2_clt (trace level 15) to help with the 
>diagnoses. What am I doing wrong?
>
>Cliff
>
>--- ssl_echo/eg2_clt log ---
>
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>I said, "Hello!".
>The Echo object replied, "Hello!".
>Caught unknown exception.
>omniORB: Distribution date: Sun Sep 22 22:06:56 BST 2002 dgrisby
>omniORB: Native char code sets: UTF-8 ISO-8859-1.
>omniORB: Transmission char code sets: UTF-8(1.2) ISO-8859-1(1.2) 
>ISO-8859-1(1.1) ISO-8859-1(1.0).
>omniORB: Native wide char code sets: UTF-16.
>omniORB: Transmission wide char code sets: UTF-16(1.2).
>omniORB: Information: the omniDynamic library is not linked.
>omniORB: Creating ref to remote: key<0x494e4954>
> target id      : omg.org/CORBA/InitialReferences:1.0
> most derived id: omg.org/CORBA/InitialReferences:1.0
>omniORB: No SSL context object supplied, attempt to create one with the 
>default ctor.
>omniORB: Creating ref to remote: root<0>
> target id      : IDL:omg.org/CORBA/Object:1.0
> most derived id: IDL:Echo:1.0
>omniORB: LocateRequest to remote: root<0>
>omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
>omniORB: omniRemoteIdentity deleted.
>omniORB: ObjRef(IDL:Echo:1.0) -- deleted.
>omniORB: Preparing to shutdown ORB.
>omniORB: omniRemoteIdentity deleted.
>omniORB: 1 object reference present at ORB shutdown.
>omniORB: ORB shutdown is complete.
>omniORB: ObjRef(omg.org/CORBA/InitialReferences:1.0) -- deleted.
>
>--- ssl_echo/eg2_impl log ---
>
>'IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000074000000010102000e0000003139322e3136382e34322e35300000000e000000fed2fddd3d000006f8000000000000000300000000000000080000000100000000545441010000001c000000010000000100010001000000010001050901010001000000090101001400000008000000010060006000540e'
>omniORB: Distribution date: Sun Sep 22 22:06:56 BST 2002 dgrisby
>omniORB: Native char code sets: UTF-8 ISO-8859-1.
>omniORB: Transmission char code sets: UTF-8(1.2) ISO-8859-1(1.2) 
>ISO-8859-1(1.1) ISO-8859-1(1.0).
>omniORB: Native wide char code sets: UTF-16.
>omniORB: Transmission wide char code sets: UTF-16(1.2).
>omniORB: Information: the omniDynamic library is not linked.
>omniORB: Creating ref to remote: key<0x494e4954>
> target id      : omg.org/CORBA/InitialReferences:1.0
> most derived id: omg.org/CORBA/InitialReferences:1.0
>omniORB: No SSL context object supplied, attempt to create one with the 
>default ctor.
>omniORB: Initialising incoming endpoints.
>omniORB: Starting serving incoming endpoints.
>omniORB: Adding root<0> (activating) to object table.
>omniORB: State root<0> (activating) -> active
>omniORB: Creating ref to local: root<0>
> target id      : IDL:Echo:1.0
> most derived id: IDL:Echo:1.0
>omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
>omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 3
>omniORB: AsyncInvoker: thread id = 3 has started. Total threads = 3
>omniORB: Accepted connection from giop:ssl:192.168.42.50:3669 because of 
>this rule: "* unix,ssl,tcp"
>omniORB: Handling a GIOP LOCATE_REQUEST.
>omniORB: throw giopStream::CommFailure from 
>giopStream.cc:812(0,NO,COMM_FAILURE_UnMarshalArguments)
>omniORB: AsyncInvoker: thread id = 3 has exited. Total threads = 3
>omniORB: ORB not destroyed; no final clean-up.
>
>---
>
>
>  
>
I think it is an already reported (but still not fixed) bug. E.g.:
http://www.omniorb-support.com/pipermail/omniorb-list/2002-September/021810.html
Another solution (which does not involve modifications in omniORB's 
source) is to implement your own sslContext::singleton, instantiate it 
statically (if not - delete it before calling orb->destroy()) and put 
the proposed code in its destructor.