Discussion:
[omniORB] linux, windows communication problem?
Karl Schulze
2006-06-14 15:05:47 UTC
Permalink
Hello all,

I have currently investigated a very odd problem when using omniORB 4.0.7.
The problem arises on several client/server applications I am working on.
The setup I am using is, running omniNames on a Linux box, running the
servers on
a Linux box and running the clients on windows boxes. Within this setup
the clients
sometimes are not able to to get objects from omniNames.

I was able to reproduce the problem with the echo example that is
included in omniORB 4.0.7.
Therefore is started omniNames with the default parameters, except the
following
scanGranularity = 1
inConScanPeriod = 1
threadPerConnectionPolicy = 0
maxServerThreadPoolSize = 5
The eg3_impl server ist started on the same machine as omniNames,
without any special needs.
For the client I have used eg3_clt with some small notifications in
'main', that are as follows
int
main (int argc, char **argv)
{
try {
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);

for (CORBA::ULong count=0; count < 1000; count++)
{
cerr << count << "/1000" << endl;
CORBA::Object_var obj = getObjectReference(orb);
Echo_var echoref = Echo::_narrow(obj);
hello(echoref);
Sleep(2000);
}

orb->destroy();
}
... the remaining code (except #include <Windows.h> for Sleep) is the
original code.

Using now this modified client with the above mentioned omniNames, I get
the error:
Caught system exception COMM_FAILURE -- unable to contact the object.
This usually occur for count between 100 and 300, sometimes below
sometimes above.

The problem seems somehow be related with the cleanup of the idle
connections, because
when I set scanGranularity = 0 the problem no longer exist, but I need
the cleanup of the
connections to prevent the omniNames to run out of network-file-descriptors.

I have also tried to use omniNames from 4.1.0beta2 that shows the same
behavior.

Using Linux for the client does not show this problem.

Is this a known behavior? (I have searched the archive but found nothing
that seems similar)
Anything I did wrong?

Regards,
Karl
Duncan Grisby
2006-06-16 19:12:13 UTC
Permalink
On Wednesday 14 June, Karl Schulze wrote:

[...]
Post by Karl Schulze
Using now this modified client with the above mentioned omniNames, I
Caught system exception COMM_FAILURE -- unable to contact the object.
This usually occur for count between 100 and 300, sometimes below
sometimes above.
Please run with -ORBtraceLevel 25 and send me the output where it fails.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Karl Schulze
2006-06-19 12:35:23 UTC
Permalink
Hi Duncan,

Sry for the late response, but here it is,
Post by Duncan Grisby
Please run with -ORBtraceLevel 25 and send me the output where it fails.
I have collected the output of all three communication partners. The ouput
contains the cycle where the problem arises but also the cycle before,
without
the problem.

Output of omniNames:
omniORB: (4) Accepted connection from giop:tcp:192.168.252.148:2986
because of this rule: "* unix,ssl,tcp"
omniORB: (4) inputMessage: from giop:tcp:192.168.252.148:2986 100 bytes
omniORB: (4) Dispatching remote call '_is_a' to: key<NameService> (active)
omniORB: (4) sendChunk: to giop:tcp:192.168.252.148:2986 25 bytes
omniORB: (4) inputMessage: from giop:tcp:192.168.252.148:2986 111 bytes
omniORB: (4) Dispatching remote call 'resolve' to: key<NameService> (active)
omniORB: (4) Dispatching local call 'resolve' to
root/<ae6c8e44010044bf/0> (active)
omniORB: (4) sendChunk: to giop:tcp:192.168.252.148:2986 160 bytes
omniORB: (2) sendCloseConnection: to giop:tcp:192.168.252.148:2986 12 bytes
omniORB: (4) giopWorker task execute.
omniORB: (4) throw giopStream::CommFailure from
giopStream.cc:803(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (4) Server connection refcount = 1
omniORB: (4) Server connection refcount = 0
omniORB: (4) Server close connection from giop:tcp:192.168.252.148:2986
omniORB: (1) Server accepted connection from giop:tcp:192.168.252.148:2988
omniORB: (4) giopWorker task execute.
omniORB: (4) Accepted connection from giop:tcp:192.168.252.148:2988
because of this rule: "* unix,ssl,tcp"
omniORB: (4) inputMessage: from giop:tcp:192.168.252.148:2988 100 bytes
omniORB: (4) Dispatching remote call '_is_a' to: key<NameService> (active)
omniORB: (4) sendChunk: to giop:tcp:192.168.252.148:2988 25 bytes
omniORB: (4) inputMessage: from giop:tcp:192.168.252.148:2988 111 bytes
omniORB: (4) Dispatching remote call 'resolve' to: key<NameService> (active)
omniORB: (4) Dispatching local call 'resolve' to
root/<ae6c8e44010044bf/0> (active)
omniORB: (4) sendChunk: to giop:tcp:192.168.252.148:2988 160 bytes
omniORB: (2) sendCloseConnection: to giop:tcp:192.168.252.148:2988 12 bytes
omniORB: (4) giopWorker task execute.
omniORB: (4) throw giopStream::CommFailure from
giopStream.cc:803(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (4) Server connection refcount = 1
omniORB: (4) Server connection refcount = 0
omniORB: (4) Server close connection from giop:tcp:192.168.252.148:2988
omniORB: (4) AsyncInvoker: thread id = 4 has exited. Total threads = 3

Output of eg3_impl:
omniORB: (3) Accepted connection from giop:tcp:192.168.252.148:2987
because of this rule: "* unix,ssl,tcp"
omniORB: (3) inputMessage: from giop:tcp:192.168.252.148:2987 38 bytes
omniORB: (3) Handling a GIOP LOCATE_REQUEST.
omniORB: (3) sendChunk: to giop:tcp:192.168.252.148:2987 20 bytes
omniORB: (3) inputMessage: from giop:tcp:192.168.252.148:2987 99 bytes
omniORB: (3) Receive codeset service context and set TCS to
(ISO-8859-1,UTF-16)
omniORB: (3) Dispatching remote call 'echoString' to: root<0> (active)
omniORB: (3) sendChunk: to giop:tcp:192.168.252.148:2987 35 bytes
omniORB: (2) sendCloseConnection: to giop:tcp:192.168.252.148:2987 12 bytes
omniORB: (3) giopWorker task execute.
omniORB: (3) throw giopStream::CommFailure from
giopStream.cc:803(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (3) Server connection refcount = 1
omniORB: (3) Server connection refcount = 0
omniORB: (3) Server close connection from giop:tcp:192.168.252.148:2987
omniORB: (1) Server accepted connection from giop:tcp:192.168.252.148:2989
omniORB: (3) giopWorker task execute.
omniORB: (3) Accepted connection from giop:tcp:192.168.252.148:2989
because of this rule: "* unix,ssl,tcp"
omniORB: (3) inputMessage: from giop:tcp:192.168.252.148:2989 38 bytes
omniORB: (3) Handling a GIOP LOCATE_REQUEST.
omniORB: (3) sendChunk: to giop:tcp:192.168.252.148:2989 20 bytes
omniORB: (3) inputMessage: from giop:tcp:192.168.252.148:2989 99 bytes
omniORB: (3) Receive codeset service context and set TCS to
(ISO-8859-1,UTF-16)
omniORB: (3) Dispatching remote call 'echoString' to: root<0> (active)
omniORB: (3) sendChunk: to giop:tcp:192.168.252.148:2989 35 bytes
omniORB: (2) sendCloseConnection: to giop:tcp:192.168.252.148:2989 12 bytes
omniORB: (3) giopWorker task execute.
omniORB: (3) throw giopStream::CommFailure from
giopStream.cc:803(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (3) Server connection refcount = 1
omniORB: (3) Server connection refcount = 0
omniORB: (3) Server close connection from giop:tcp:192.168.252.148:2989
omniORB: (3) AsyncInvoker: thread id = 3 has exited. Total threads = 3

Output of modified eg3_clt:
558/1000
omniORB: Initial reference `NameService' resolved from configuration file.
omniORB: sendChunk: to giop:tcp:192.168.252.15:2809 100 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:2809 12 bytes
omniORB: throw giopStream::CommFailure from
giopImpl10.cc:298(1,NO,COMM_FAILURE_WaitingForReply)
omniORB: Client connection refcount = 0
omniORB: Client close connection to giop:tcp:192.168.252.15:2809
omniORB: Client attempt to connect to giop:tcp:gcc323devel.synedra.lan:2809
omniORB: Client opened connection to giop:tcp:192.168.252.15:2809
omniORB: sendChunk: to giop:tcp:192.168.252.15:2809 100 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:2809 25 bytes
omniORB: Creating ref to remote: key<NameService>
target id : IDL:omg.org/CosNaming/NamingContext:1.0
most derived id:
omniORB: sendChunk: to giop:tcp:192.168.252.15:2809 111 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:2809 160 bytes
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:Echo:1.0
omniORB: ObjRef() -- deleted.
omniORB: LocateRequest to remote: root<0>
omniORB: sendChunk: to giop:tcp:192.168.252.15:36186 38 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:36186 12 bytes
omniORB: throw giopStream::CommFailure from
giopImpl12.cc:285(1,NO,COMM_FAILURE_WaitingForReply)
omniORB: Client connection refcount = 0
omniORB: Client close connection to giop:tcp:192.168.252.15:36186
omniORB: LocateRequest to remote: root<0>
omniORB: Client attempt to connect to giop:tcp:192.168.252.15:36186
omniORB: Client opened connection to giop:tcp:192.168.252.15:36186
omniORB: sendChunk: to giop:tcp:192.168.252.15:36186 38 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:36186 20 bytes
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: sendChunk: to giop:tcp:192.168.252.15:36186 99 bytes
omniORB: inputMessage: from giop:tcp:192.168.252.15:36186 35 bytes
I said, "Hello!".
The Echo object replied, "Hello!".
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:Echo:1.0) -- deleted.
559/1000
omniORB: Initial reference `NameService' resolved from configuration file.
omniORB: sendChunk: to giop:tcp:192.168.252.15:2809 100 bytes
omniORB: throw giopStream::CommFailure from
giopStream.cc:835(0,MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: Client connection refcount = 0
omniORB: Client close connection to giop:tcp:192.168.252.15:2809
omniORB: throw COMM_FAILURE from omniObjRef.cc:754
(MAYBE,COMM_FAILURE_WaitingForReply)
Caught system exception COMM_FAILURE -- unable to contact the object.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef() -- deleted.
omniORB: ORB not destroyed; no final clean-up.

Regards,
Karl

Loading...