[omniORB] unexpected exception (not a CORBA exception)

Duncan Grisby dgrisby@uk.research.att.com
Tue, 11 Jul 2000 12:07:37 +0100


On Friday 7 July, Xuekai Song wrote:

> a) Each time after a call is returned from the server to the
> client, the following exception was thrown:
> 
> omniORB: WARNING -- method 'IlUserAuthenticate' raised an
> unexpected exception (not a CORBA exception).
> omniORB: An exception has occured and was caught by tcpSocketMT
> Worker thread.
> 
> Here method IlUserAuthenticate(const char *, const char *) returns
> boolean type.  The same exception was thrown for other calls made to
> the third party library.  Apart from the exception, it works ok.

The most likely explanation is that your function really is throwing a
non-CORBA exception. I think Windows turns some things like
out-of-memory into C++ exceptions, so maybe that's the problem. Try
putting a try block which catches (...) around your function, and see
if it catches anything.

The only other possibility I can think of is that there's a compiler
version mismatch. Are you using the Windows binary distribution?  That
is compiled with VC++ 5, so it might be the cause of the problem.

> b) Each call from the client takes about the same time as set by
> -ORBserverCallTimeoutPeriod.  So it means I have to set it
> to 1 in order to get the fastest response possible.
> 
> a) & b) might be related and it seems to me that the server
> somehow lost track of the client request and have to wait until
> the connection to be timed out.

That's very odd. After the "unexpected exception" message, it should
throw a CORBA::UNKNOWN exception to the caller, without waiting for
anything. Try running your server with a command line argument of
-ORBtraceLevel 20, and see what the trace messages say.

Cheers,

Duncan.

-- 
 -- Duncan Grisby  \  Research Engineer  --
  -- AT&T Laboratories Cambridge          --
   -- http://www.uk.research.att.com/~dpg1 --