[omniORB] Weird Connection Problems (cygwin & linux)

Brian Neal bgneal at gmail.com
Wed Feb 22 18:44:39 GMT 2006


I don't know if this is an omniORB problem or what...probably not. I
just need some pointers on how to debug this. Sorry this is so long.
Any help would be appreciated.

Our application runs under Linux on a PowerPC processor. For the sake
of this discussion, call our app and the PowerPC it runs on the
"radio". It uses omniORB 4.0.6.

Us developers use cygwin a lot on our PC's, and we were able to get
omniORB to build under cygwin using info found on this wonderful
mailing list.

We started developing some CORBA test apps under cygwin. For months
now, we have been able to do the following successfully:

1) The naming service runs on the radio hardware along with our app
2) Our app registers various CORBA servers with the naming service.
3) Our PC/cygwin based test apps have been able to locate the naming
service running on the radio (using the -ORBInitRef
NameService=corbaname::host argument on the command line).
4) They then resolve references to our app servers, narrow them, and
can make many thousands of successful happy two-way and one-way CORBA
calls with our radio apps. :-)

This worked pretty much the first time, and it was with some amazement
by me, since we have a crazy corporate network, and I know there is a
firewall between our PC's at our desks and the radio hardware in the
lab.

Well, in the last couple of days we have tried something new. One of
our new test apps creates a server, and an object reference to this
server is passed to one of our radio apps as part of a CORBA call from
the PC to the radio. When our radio apps tries to make CORBA calls on
this object reference back to the PC, nothing seems to happen. The
CORBA thread(s) seem to block (just in case this is important, the
CORBA call in question is a one-way).

So I went off and created a simple test client and server, very
similar to the echo 2 example that comes with omniORB. I have the
server print out a stringified IOR, which I then cut & paste into the
command line of the client. The client calls the remote server, and
passes an object reference to a local server. The remote server then
makes a CORBA call on this IOR, causing a hello world type message to
appear on the client.

This works when both client and server are running under cygwin. It
also works when both are running on our radio. But when the two apps
are each on a different machine, it seems that the foreign stringified
IOR doesn't work. For example, when the cygwin client gets the
stringified IOR from the radio server, it narrows it and all that, but
the CORBA call just hangs.

This has me totally baffled because other apps obtain radio IOR's
through the naming service, and they work just fine. What is different
about stringified IOR's?

And, assuming we get past that, why would the radio making calls into
a cygwin server hang? Its going the other way through the
firewall...is that it?

Any suggestions or ideas are most welcome. Thanks.



More information about the omniORB-list mailing list