[omniORB] OmniORB-4.2.2 compiled with gcc8 and C++14 leads into crash

Duncan Grisby duncan at grisby.org
Fri Mar 29 10:20:03 GMT 2019


On Mon, 2019-03-25 at 06:19 +0000, Prasath via omniORB-list wrote:

[...]
> But now for project need, we have upgraded the compiler and std
> library from “gcc4.8 and C++14” to “gcc8 and C++17”. So that we
> compiled the source OmniORB-4.2.2 with “gcc8 and C++17”.

[...]
> We tested the project (Our Application + OmniORB-4.2.2) which is
> completely compiled with “gcc8 and C++17”. But the process got
> crashed with terminate caught due to throwing dynamic exception on
> communication failure.

Something is clearly wrong with your build of it then.

[...]
> omniORB: Orderly connection shutdown:
> giop:tcp:[::ffff:10.41.46.93]:33260
> omniORB: throw giopStream::CommFailure from
> giopImpl12.cc:1243(0,NO,COMM_FAILURE_UnMarshalArguments)

This is omniORB's normal way of handling a connection being closed. It
throws the internal giopStream::CommFailure exception and catches it
higher up the call chain.

> Terminate caught

But this shows that the exception handler didn't trigger. The problem
is not in omniORB, but something about the way it was compiled.

[...]
> Turnoff the exception – We commented out the exception throw code at
> line number:512 in “src\lib\omniORB\orbcore\giopStream.cc”
> throw CommFailure(minor,status,retry);

Clearly that is not the right thing to do. The code throws the
exception on purpose. If you break the code by no longer throwing the
exception, the server will no longer properly clean up connections.

You need to figure out why your build broke the exception handling.

You haven't mentioned what platform you are using.

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --





More information about the omniORB-list mailing list