[omniORB] CORBA::COMM_FAILURE with out structures.

Peter.Ronnquist@nokia.com Peter.Ronnquist@nokia.com
Fri, 15 Sep 2000 11:49:11 +0300


Hi,

We are having troubles with omniOrb 2.8.0 (also gives same error on =
omniOrb
3.0) regarding a method that takes a struct as out parameter.

The sympom is that the client gets a CORBA::COMM_FAILURE exception when =
the
method is called. The server side is called and it executes all its =
function
body but the client side of the method never returns (only gives the
COMM_FAILIURE).

The fun part is that when the test fields are removed then the method =
call
succeds. We have also experimented with other combinations of fields in =
the
struct and arguments to the method and it works in some cases. It is =
like it
depends on how much data that is sent.=20
Have anyone else had similar problems?=20


Details:
--------------
idlfile:

struct TInfo {=20
 unsigned long test;
 unsigned long signalStrength;
 unsigned long BER;
 unsigned long SNR;
 unsigned long frequency;
}

unsigned long getInfo(out TInfo info);

client:

struct TInfo info;
...
try {
	res =3D (u_int32) tuner->GetInfo(info);
}
...

server:

CORBA::ULONG GetInfo(TInfo& _info) {
	_info.test=3D0;
	_info.signalStrength=3D0;
	_info.BER=3D0;
	_info.SNR=3D0;
	_info.frequency=3D0;
=09
	return (CORBA::ULong)1;
}



I am using Linux Redhat 6.0 with gcc 2.95.2, the 2.8.0 version is built =
from
sources on the target machine on which both the client and server =
resides
(and the orb also).

I also tried with the omniOrb 3.0 (the redhat rpm from the omniOrb =
site).


Peter R=F6nnquist
Software engineer
Nokia Link=F6ping
Sweden