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

Prasath_Palaniappan at amat.com Prasath_Palaniappan at amat.com
Thu May 9 11:24:33 BST 2019


Hi Serguei / Duncan,

Thanks for the information.

As you suggested, I built the examples with “gcc 8.2.0 and C++ 17” and tried to run “call_back” example.
I am getting the same issue below,

bash-4.4$ ./cb_server
IOR:000000000000001249444c3a63622f5365727665723a312e30000000000000010000000000000064000102000000000c31302e34312e34362e393200d0da00000000000efe5cd3eeb462000000000000000000000000000200000000000000080000000041545400000000010000001c00000000000100010000000105010001000101090000000100010109
cb_server: Doing a single call-back: Hello!
terminate called after throwing an instance of 'omni::giopStream::CommFailure'
IOT/Abort trap (core dumped)
bash-4.4$

bash-4.4$ ./cb_client 'IOR:000000000000001249444c3a63622f5365727665723a312e30000000000000010000000000000064000102000000000c31302e34312e34362e393200d0da00000000000efe5cd3eeb462000000000000000000000000000200000000000000080000000041545400000000010000001c00000000000100010000000105010001000101090000000100010109'
cb_client: server->one_time(call_back, "Hello!")
cb_client: call_back("Hello!")
cb_client: Returned.
terminate called after throwing an instance of 'omni::giopStream::CommFailure'
IOT/Abort trap (core dumped)
bash-4.4$

Details about our compilation:

  *   gcc 8.2.0 compiled with the below configuration options on AIX 6.1 (powerpc-ibm-aix6.1.0.0)

/disks/smithers3/workplaces/build/gcc-8.2/gcc-8.2.0/configure --prefix=/usr/local/gcc-8.2-powerpc-ibm-aix6.1.0.0 --build=powerpc-ibm-aix6.1.0.0 --without-gnu-as --with-as=/usr/bin/as --without-gnu-ld --with-ld=/usr/bin/ld --disable-nls --disable-shared --enable-languages=c++ --enable-checking=release --enable-bootstrap -enable-version-specific-runtime-libs

  *   omniORB compiled with gcc 8.2.0 and c++17 on AIX 6.1 (powerpc-ibm-aix6.1.0.0)

$./configure --prefix=/usr/local/dev

$make

$make install

Further examination, I copied the omniORB binaries (which is originally compiled with gcc 8.2.0 and c++17 on AIX 6.1) into AIX 7.1 platform and ran the call_back test. I am getting the same issue in AIX7.1 too.

It would be helpful if you share your thoughts in that to proceed further.

Thanks & Regards,
P. Prasath.

From: Serguei Kolos <serguei.kolos at cern.ch>
Sent: Tuesday, April 23, 2019 4:21 PM
To: Prasath Palaniappan <Prasath_Palaniappan at amat.com>; duncan at grisby.org; omniorb-list at omniorb-support.com
Cc: Shankar Chinnusamy <Shankar_Chinnusamy at amat.com>
Subject: Re: [omniORB] [External] Re: OmniORB-4.2.2 compiled with gcc8 and C++14 leads into crash

Hi Prasath

I still believe that the issue is not related to omniORB. In our project we have been using
omniORB-4.2.2 compiled with gcc 8.2.0 (using c++1z option which is a synonym of the c++17)
for the x86_64-pc-linux-gnu platform and it works flawlessly. It should be either a compiler
configuration issue or something inside your project.
By the way did you try to run any of the omniORB examples compiled with gcc 8.2.0?

Cheers,
Serguei

PS: Here is our compiler configuration
g++ -v
Using built-in specs.
COLLECT_GCC=g++
Target: x86_64-pc-linux-gnu
Configured with: configure --prefix=/gcc/8.2.0/x86_64-centos7 -with-system-zlib --disable-multilib --enable-languages=all --with-gnu-ld --with-ld=/binutils/2.30/x86_64-centos7/bin/ld --with-gnu-as --with-as=/binutils/2.30/x86_64-centos7/bin/as
Thread model: posix
gcc version 8.2.0 (GCC)

On 4/23/19 12:05 PM, Prasath_Palaniappan at amat.com<mailto:Prasath_Palaniappan at amat.com> wrote:
Hi Serguei,

Thanks for the suggestion.

Actually I have done the same what you suggested. I have removed the 'throw(...)' specifications completely from all the functions.
I am getting the issue with that only.

Thanks & Regards,
P. Prasath.

From: Serguei Kolos <serguei.kolos at cern.ch><mailto:serguei.kolos at cern.ch>
Sent: Tuesday, April 23, 2019 3:25 PM
To: Prasath Palaniappan <Prasath_Palaniappan at amat.com><mailto:Prasath_Palaniappan at amat.com>; duncan at grisby.org<mailto:duncan at grisby.org>; omniorb-list at omniorb-support.com<mailto:omniorb-list at omniorb-support.com>
Cc: Shankar Chinnusamy <Shankar_Chinnusamy at amat.com><mailto:Shankar_Chinnusamy at amat.com>
Subject: Re: [omniORB] [External] Re: OmniORB-4.2.2 compiled with gcc8 and C++14 leads into crash


Hi Prasath

You mentioned that in order to compile omniORB with c++17 option you have removed the 'throw'
specifications from some functions declarations. How did you actually do that? Could it be
that you have made this modification in the following way:

    void f() throw (BadParam)   => void f() throw ()

The crash which you get normally happens in one of the two cases:

 1) A function declares 'throw(A)' but actually throws a different exception 'B'.
 2) A function is declared as not throwing any exception using 'throw()' declaration but actually throws an exception.

So I would suggest you to check that you have removed the 'throw(...)' specifications completely
from all the functions concerned and don't have 'throw()' terms left anywhere in these functions
declarations.

Cheers,
Serguei

On 4/23/19 11:01 AM, Prasath via omniORB-list wrote:
Hi Duncan,

Thanks for the response.

Please find the answers below,

Where did the compiler come from?
gcc 8.2 (gcc-8.2.0.tar.gz) is downloaded from https://gcc.gnu.org/

Did you compile it yourself?
Yes, we compiled it (gcc-8.2.0.tar.gz). Arguments to gcc configure script below,
$./configure --prefix=/usr/local/gcc-8.2-powerpc-ibm-aix6.1.0.0 --build=powerpc-ibm-aix6.1.0.0 --without-gnu-as --with-as=/usr/bin/as --without-gnu-ld --with-ld=/usr/bin/ld --disable-nls --disable-shared --enable-languages=c++ --enable-checking=release --enable-bootstrap -enable-version-specific-runtime-libs
$make install

What does "g++ -v" report?
bash-4.4$ ./g++ -v
Using built-in specs.
COLLECT_GCC=./g++
COLLECT_LTO_WRAPPER=/usr/local/gcc-8.2-powerpc-ibm-aix6.1.0.0/libexec/gcc/powerpc-ibm-aix6.1.0.0/8.2.0/lto-wrapper
Target: powerpc-ibm-aix6.1.0.0
Configured with: /disks/smithers3/workplaces/build/gcc-8.2/gcc-8.2.0/configure --prefix=/usr/local/gcc-8.2-powerpc-ibm-aix6.1.0.0 --build=powerpc-ibm-aix6.1.0.0 --without-gnu-as --with-as=/usr/bin/as --without-gnu-ld --with-ld=/usr/bin/ld --disable-nls --disable-shared --enable-languages=c++ --enable-checking=release --enable-bootstrap -enable-version-specific-runtime-libs
Thread model: aix
gcc version 8.2.0 (GCC)

How did you configure omniORB?  What were the arguments to its configure script?
$./configure --prefix=/usr/local/dev
$make
$make install

As per your advice, we removed all the throw specifications and it got compiled successfully.
And tested again but we are getting the same termination. For your reference, I have attached the completed log (it also has crash stack) with this mail.
Please provide your thoughts to proceed further.

Thanks & Regards,
P. Prasath.

-----Original Message-----
From: Duncan Grisby <duncan at grisby.org><mailto:duncan at grisby.org>
Sent: Tuesday, April 16, 2019 5:58 PM
To: Prasath Palaniappan <Prasath_Palaniappan at amat.com><mailto:Prasath_Palaniappan at amat.com>; omniorb-list at omniorb-support.com<mailto:omniorb-list at omniorb-support.com>
Cc: Shankar Chinnusamy <Shankar_Chinnusamy at amat.com><mailto:Shankar_Chinnusamy at amat.com>
Subject: Re: [omniORB] [External] Re: OmniORB-4.2.2 compiled with gcc8 and C++14 leads into crash


CAUTION: EXTERNAL EMAIL. Verify before you click links or open attachments. Questions? Contact GIS.



On Wed, 2019-04-10 at 11:03 +0000, Prasath via omniORB-list wrote:

> OmniORB-4.2.2 has dynamic exception specifications those are
> unsupported in C++17.
> So we removed those unsupported dynamic exception specifications and
> compiled the OmniORB-4.2.2 with "gcc8 and C++17".
> virtual void visit(const char* value,Source source) throw (BadParam) =
> 0;

Yes, that is the right thing to do. Just remove all the throw specifications. The only place that has those throw specifications is in the option processing code, which is not involved at all in the errors you are seeing. Whatever the problem is, it has absolutely nothing to do with those throw specifications.

> Apart from those changes what else need to be done to compile the
> OmniORB-4.2.2 with "gcc8 and C++17" properly?

Nothing. It works fine with just that change.

> Clarifications:
> As you mentioned that you have removed throw specifications in
> OmniORB-4.3 to support future compilers and it is in development
> branch. If so, could you please let us know when it will be released?

There is no current timeframe for omniORB 4.3 to be released, but that is irrelevant here. There are no other changes in 4.3 that are related to this.

The compiler has generated incorrect code, or the C++ runtime is faulty. An exception is being thrown but it not being caught as it should be by the exception handler.

Where did the compiler come from?  Did you compile it yourself?  What does "g++ -v" report?

How did you configure omniORB?  What were the arguments to its configure script?

Duncan.

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

The content of this message is APPLIED MATERIALS CONFIDENTIAL. If you are not the intended recipient, please notify me, delete this email and do not use or distribute this email.




_______________________________________________

omniORB-list mailing list

omniORB-list at omniorb-support.com<mailto:omniORB-list at omniorb-support.com>

http://www.omniorb-support.com/mailman/listinfo/omniorb-list


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20190509/75859d9c/attachment-0001.html>


More information about the omniORB-list mailing list