Discussion:
[omniORB] CORBA::Double corrupted when compiling -O2 and -O3
Stuart Caunt
2007-02-15 14:09:23 UTC
Permalink
Hi,

I've recently upgraded my linux system and have noticed that values passed
as CORBA::Double in our CORBA application are not passed correctly - the
values end up being very close to zero, eg 1.213342e-41 for all values
(even if they were originally 1.2, 3.4, 10.0, etc).

We've traced the root of the problem to the optimisation flag. Originally
it was -O3 but even at -O2 the problem remains. -O1 removes the problem. I
understand that -O3 can have certain effects on the reliability of
floating point calculations but I'm more surprised at the -O2 optimisation
problem.

I'm running on Debian Etch with OmniORB 4.0.6 and g++ 4.1.2. Has anyone
else had similar problems?

Many thanks,
Stuart
Ciprian Enache
2007-02-16 08:15:30 UTC
Permalink
Hello Stuart,

I've noticed a similar problem when connecting from with an Omniorb
python client to an ORBACUS server, but I thought it was caused by some
incompatibility in the interface layer.

Running on Debian Testing.

Best regards,
Ciprian Enache
Post by Stuart Caunt
Hi,
I've recently upgraded my linux system and have noticed that values passed
as CORBA::Double in our CORBA application are not passed correctly - the
values end up being very close to zero, eg 1.213342e-41 for all values
(even if they were originally 1.2, 3.4, 10.0, etc).
We've traced the root of the problem to the optimisation flag. Originally
it was -O3 but even at -O2 the problem remains. -O1 removes the problem. I
understand that -O3 can have certain effects on the reliability of
floating point calculations but I'm more surprised at the -O2 optimisation
problem.
I'm running on Debian Etch with OmniORB 4.0.6 and g++ 4.1.2. Has anyone
else had similar problems?
Many thanks,
Stuart
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
--
Ciprian Enache
Computaris Ltd
E-mail: ***@computaris.com
Office: +40-21-204-5225
Mobile: +40-726-743-510


This email is subject to Computaris email terms of use: http://www.computaris.com/email_terms.html
Duncan Grisby
2007-02-16 18:24:33 UTC
Permalink
Post by Stuart Caunt
I've recently upgraded my linux system and have noticed that values passed
as CORBA::Double in our CORBA application are not passed correctly - the
values end up being very close to zero, eg 1.213342e-41 for all values
(even if they were originally 1.2, 3.4, 10.0, etc).
[...]
Post by Stuart Caunt
I'm running on Debian Etch with OmniORB 4.0.6 and g++ 4.1.2. Has anyone
else had similar problems?
It is a known problem caused by an interaction between omniORB's
marshalling code and the gcc version used in Debian. The issue was fixed
long ago. Upgrade to omniORB 4.1.0 or 4.0.7 and it will work fine.

I wonder why Debian is still distributing an old omniORB version that is
known to be broken on that OS.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Stuart Caunt
2007-02-16 21:05:52 UTC
Permalink
Hi Duncan,

Thanks for the reply and the solution. This version of Debian is still
"Testing", hopefully omniOrb will be upgraded before the stable release.

Cheers,
Stuart
Post by Duncan Grisby
Post by Stuart Caunt
I've recently upgraded my linux system and have noticed that values passed
as CORBA::Double in our CORBA application are not passed correctly - the
values end up being very close to zero, eg 1.213342e-41 for all values
(even if they were originally 1.2, 3.4, 10.0, etc).
[...]
Post by Stuart Caunt
I'm running on Debian Etch with OmniORB 4.0.6 and g++ 4.1.2. Has anyone
else had similar problems?
It is a known problem caused by an interaction between omniORB's
marshalling code and the gcc version used in Debian. The issue was fixed
long ago. Upgrade to omniORB 4.1.0 or 4.0.7 and it will work fine.
I wonder why Debian is still distributing an old omniORB version that is
known to be broken on that OS.
Cheers,
Duncan.
--
-- Duncan Grisby --
-- http://www.grisby.org --
Loading...