Discussion:
[omniORB] incorrect IP address after update to SuSE 11.1
Nikolas Kauer
2009-04-16 04:20:26 UTC
Permalink
After the sysadmin updated machines to SuSE 11.1, the
server/client produces an IOR string with incorrect IP
address but correct port number:

$ catior IOR:010000001300000049444c3a4f6d6e69576f726b65723a312e300000010000000000000060000000010102000a0000003132372e302e302e32008eb70e000000fede1de64900006d4c000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100
Type ID: "IDL:OmniWorker:1.0"
Profiles:
1. IIOP 1.2 127.0.0.2 46990 "....I..mL....."
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16

On SuSE 10.x systems this problem does not occur. We have
been using omniORB-4.0.7, so far without any problems (Thanks,
Duncan!). We checked that the following holds also on the
SuSE 11.1 systems: The correct IP address is returned by
"nslookup <hostname>", "hostname -i" and "/sbin/ifconfig -a".
/etc/hosts does not contain 127.0.0.2.

Section 8.6 of the omni40 docs states "If the host is empty, the
ORB published the IP address of the first non-loopback network
interface it can find (or the loopback if that is the only
interface), ..." How does this actually work?

If you have an idea what might be going on here, please
let us know. Any hints will be greatly appreciated.
Tim Theisen
2009-04-16 06:11:37 UTC
Permalink
I don't know if this applies to omniORB. But, I had a similar problem
with JacORB.

Check your /etc/hosts file for entries like:

127.0.0.2 computername
127.0.0.2 <anything except localhost>

These entries will cause JacORB to create IORs with the loopback
address.

...Tim
--
Tim Theisen Lead Research Software Engineer
Phone: +1 608 824 2848 TomoTherapy Incorporated
Fax: +1 608 824 2996 1240 Deming Way
Web: http://www.tomotherapy.com Madison, WI 53717-1954
-----Original Message-----
From: omniorb-list-***@omniorb-support.com
[mailto:omniorb-list-***@omniorb-support.com] On Behalf Of Nikolas
Kauer
Sent: Wednesday, April 15, 2009 17:20
To: omniorb-***@omniorb-support.com
Cc: Stefan Karg
Subject: [omniORB] incorrect IP address after update to SuSE 11.1

After the sysadmin updated machines to SuSE 11.1, the
server/client produces an IOR string with incorrect IP
address but correct port number:

$ catior
IOR:010000001300000049444c3a4f6d6e69576f726b65723a312e300000010000000000
000060000000010102000a0000003132372e302e302e32008eb70e000000fede1de64900
006d4c000000000000000200000000000000080000000100000000545441010000001c00
000001000000010001000100000001000105090101000100000009010100
Type ID: "IDL:OmniWorker:1.0"
Profiles:
1. IIOP 1.2 127.0.0.2 46990 "....I..mL....."
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16

On SuSE 10.x systems this problem does not occur. We have
been using omniORB-4.0.7, so far without any problems (Thanks,
Duncan!). We checked that the following holds also on the
SuSE 11.1 systems: The correct IP address is returned by
"nslookup <hostname>", "hostname -i" and "/sbin/ifconfig -a".
/etc/hosts does not contain 127.0.0.2.

Section 8.6 of the omni40 docs states "If the host is empty, the
ORB published the IP address of the first non-loopback network
interface it can find (or the loopback if that is the only
interface), ..." How does this actually work?

If you have an idea what might be going on here, please
let us know. Any hints will be greatly appreciated.
Duncan Grisby
2009-04-20 15:48:57 UTC
Permalink
Post by Nikolas Kauer
After the sysadmin updated machines to SuSE 11.1, the
server/client produces an IOR string with incorrect IP
$ catior IOR:010000001300000049444c3a4f6d6e69576f726b65723a312e300000010000000000000060000000010102000a0000003132372e302e302e32008eb70e000000fede1de64900006d4c000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100
Type ID: "IDL:OmniWorker:1.0"
1. IIOP 1.2 127.0.0.2 46990 "....I..mL....."
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16
On SuSE 10.x systems this problem does not occur. We have
been using omniORB-4.0.7, so far without any problems (Thanks,
Duncan!). We checked that the following holds also on the
SuSE 11.1 systems: The correct IP address is returned by
"nslookup <hostname>", "hostname -i" and "/sbin/ifconfig -a".
/etc/hosts does not contain 127.0.0.2.
Please run with -ORBtraceLevel 25 and send the output.
Post by Nikolas Kauer
Section 8.6 of the omni40 docs states "If the host is empty, the
ORB published the IP address of the first non-loopback network
interface it can find (or the loopback if that is the only
interface), ..." How does this actually work?
omniORB asks the OS for all its IP addresses, and picks the first one
that is not 127.0.0.1. You strangely have an address of 127.0.0.2, so if
that is the first one in the list, omniORB will pick that.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Nikolas Kauer
2009-04-21 23:47:26 UTC
Permalink
Post by Duncan Grisby
Post by Nikolas Kauer
/etc/hosts does not contain 127.0.0.2.
Please run with -ORBtraceLevel 25 and send the output.
Below is traceLevel = 40 output: first for a run on SuSE 11.1,
which fails with CORBA::SystemException, second the same
statically linked executable run on SuSE 10.x without
encountering the problem.

We successfully solved the problem by explicitly specifying the
correct hostname using the command line option
-ORBendPoint giop:tcp:<hostname>:
but still have no idea what causes the error on SuSE 11.1.

=========================================================================
omniORB: Read from configuration file
"/net/home/lxtsfs1/tpe/grak/config/omniORB.cfg".
omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 127.0.0.1
omniORB: 134.61.11.17
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: ISO-8859-1 UTF-8.
omniORB: Transmission char code sets: ISO-8859-1(1.2) ISO-8859-1(1.1)
ISO-8859-1(1.0) UTF-8(1.2) UTF-8(1.1).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Creating ref to remote: key<INIT>
target id : omg.org/CORBA/InitialReferences:1.0
most derived id: omg.org/CORBA/InitialReferences:1.0
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname = aclxs1.physik.rwth-aachen.de
omniORB: bootstrapAgentPort = 2809
omniORB: clientCallTimeOutPeriod = 0
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = /net/home/lxtsfs1/tpe/grak/config/omniORB.cfg
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublishAllIFs = 0
omniORB: giopMaxMsgSize = 67108864
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 2147483647
omniORB: maxSocketSend = 2147483647
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: omniORB_27_CompatibleAnyExtraction = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
omniORB: strictIIOP = 1
omniORB: supportBootstrapAgent = 0
omniORB: supportCurrent = 1
omniORB: supportPerThreadTimeOut = 0
omniORB: tcAliasExpand = 0
omniORB: threadPerConnectionLowerLimit = 9000
omniORB: threadPerConnectionPolicy = 1
omniORB: threadPerConnectionUpperLimit = 10000
omniORB: threadPoolWatchConnection = 1
omniORB: traceExceptions = 0
omniORB: traceFile = [stderr]
omniORB: traceInvocations = 0
omniORB: traceLevel = 40
omniORB: traceThreadId = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Initialising incoming endpoints.
omniORB: Bind to address 0.0.0.0.
omniORB: Starting serving incoming endpoints.
omniORB: Adding root<0> (activating) to object table.
omniORB: State root<0> (activating) -> active
omniORB: Creating ref to local: root<0>
target id : IDL:OmniProgressOutput:1.0
most derived id: IDL:OmniProgressOutput:1.0
Gjet: OmniComp master process started
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: giopRendezvouser task execute for giop:tcp:134.61.11.17:33473
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
4 worker(s) found
omniORB: LocateRequest to remote: root<0>
omniORB: Client attempt to connect to giop:tcp:127.0.0.2:38538
omniORB: Switch rope to use address giop:tcp:127.0.0.2:38538
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 2
omniORB: Scavenger task execute.
Gjet: CORBA::SystemException
omniORB: Preparing to shutdown ORB.
omniORB: Destroying POA(RootPOA).
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: State root<0> (active) -> deactivating (OA destruction)
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: State root<0> (deactivating OA) -> etherealising
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Removing root<0> (etherealising) from object table
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: All object adapters inactive. Stopping serving incoming
endpoints.
omniORB: giopServer deactivate...
omniORB: Terminate rendezvousers...
omniORB: giopRendezvouser for giop:tcp:134.61.11.17:33473 terminate...
omniORB: giopServer terminate connection from giop:tcp:134.61.11.17:56629.
omniORB: giopRendezvouser for endpoint giop:tcp:134.61.11.17:33473 exit.
omniORB: Rendezvousers terminated.
omniORB: giopServer deactivated.
omniORB: Destruction of POA(RootPOA) complete.
omniORB: Shutting-down all incoming endpoints.
omniORB: TCP endpoint shut down.
omniORB: Disable ObjRef(IDL:OmniWorker:1.0) root<0>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef(IDL:OmniWorker:1.0) root<0>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef(IDL:OmniWorker:1.0) root<0>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef(IDL:OmniWorker:1.0) root<0>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef(IDL:OmniProgressOutput:1.0) root<0>
omniORB: Object table entry root<0> (dead) deleted.
omniORB: Disable ObjRef(omg.org/CORBA/InitialReferences:1.0) key<INIT>
omniORB: omniRemoteIdentity deleted.
omniORB: 6 object references present at ORB shutdown.
omniORB: ORB shutdown is complete.
omniORB: ObjRef(omg.org/CORBA/InitialReferences:1.0) -- deleted.
omniORB: Terminate strand scavenger.
omniORB: Close remaining strands.
omniORB: 0 remaining bidir ropes deleted.
omniORB: 0 remaining ropes deleted.
omniORB: Clear endPoint options.
omniORB: AsyncInvoker: thread id = 1 has exited. Total threads = 2
omniORB: Scan for idle connections (1239722968,404340000)
omniORB: Scan for idle connections done (1239722968,404340000).
omniORB: AsyncInvoker: thread id = 2 has exited. Total threads = 1
omniORB: AsyncInvoker: deleted.
omniORB: Final clean-up
omniORB: Deleted 4 nil object references and 0 other tracked objects.
omniORB: Final clean-up completed.

-----------------------------------------------------------------------------

omniORB: Read from configuration file
"/net/home/lxtsfs1/tpe/grak/config/omniORB.cfg".
omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 127.0.0.1
omniORB: 134.61.11.17
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: ISO-8859-1 UTF-8.
omniORB: Transmission char code sets: ISO-8859-1(1.2) ISO-8859-1(1.1)
ISO-8859-1(1.0) UTF-8(1.2) UTF-8(1.1).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Creating ref to remote: key<INIT>
target id : omg.org/CORBA/InitialReferences:1.0
most derived id: omg.org/CORBA/InitialReferences:1.0
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname = aclxs1.physik.rwth-aachen.de
omniORB: bootstrapAgentPort = 2809
omniORB: clientCallTimeOutPeriod = 0
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = /net/home/lxtsfs1/tpe/grak/config/omniORB.cfg
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublishAllIFs = 0
omniORB: giopMaxMsgSize = 67108864
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 2147483647
omniORB: maxSocketSend = 2147483647
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: omniORB_27_CompatibleAnyExtraction = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
omniORB: strictIIOP = 1
omniORB: supportBootstrapAgent = 0
omniORB: supportCurrent = 1
omniORB: supportPerThreadTimeOut = 0
omniORB: tcAliasExpand = 0
omniORB: threadPerConnectionLowerLimit = 9000
omniORB: threadPerConnectionPolicy = 1
omniORB: threadPerConnectionUpperLimit = 10000
omniORB: threadPoolWatchConnection = 1
omniORB: traceExceptions = 0
omniORB: traceFile = [stderr]
omniORB: traceInvocations = 0
omniORB: traceLevel = 40
omniORB: traceThreadId = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Initialising incoming endpoints.
omniORB: Bind to address 0.0.0.0.
omniORB: Starting serving incoming endpoints.
omniORB: Adding root<0> (activating) to object table.
omniORB: State root<0> (activating) -> active
omniORB: Creating ref to local: root<0>
target id : IDL:OmniProgressOutput:1.0
most derived id: IDL:OmniProgressOutput:1.0
Gjet: OmniComp master process started
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: giopRendezvouser task execute for giop:tcp:134.61.11.17:52789
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
2 worker(s) found
omniORB: LocateRequest to remote: root<0>
omniORB: Client attempt to connect to giop:tcp:134.61.11.138:43867
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 2
omniORB: Client opened connection to giop:tcp:134.61.11.138:43867
omniORB: sendChunk: to giop:tcp:134.61.11.138:43867 38 bytes
omniORB:
4749 4f50 0102 0103 1a00 0000 0200 0000 GIOP............
0000 6533 0e00 0000 feb6 ace4 4900 0056 ..e3........I..V
7400 0000 0000 t.....
omniORB: Scavenger task execute.
omniORB: inputMessage: from giop:tcp:134.61.11.138:43867 20 bytes
omniORB:
4749 4f50 0102 0104 0800 0000 0200 0000 GIOP............
0100 0000 ....
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: sendChunk: to giop:tcp:134.61.11.138:43867 236 bytes
omniORB:
4749 4f50 0102 0100 e000 0000 0400 0000 GIOP............
0300 0000 0000 0000 0e00 0000 feb6 ace4 ................
4900 0056 7400 0000 0000 3430 0b00 0000 I..Vt.....40....
696e 6974 6961 6c69 7a65 0030 0100 0000 initialize.0....
0100 0000 0c00 0000 0100 0000 0100 0100 ................
0901 0100 6533 3133 0000 3830 1b00 0000 ....e313..80....
4944 4c3a 4f6d 6e69 5072 6f67 7265 7373 IDL:OmniProgress
4f75 7470 7574 3a31 2e30 0030 0100 0000 Output:1.0.0....
0000 0000 6400 0000 0101 0200 0d00 0000 ....d...........
3133 342e 3631 2e31 312e 3137 0000 35ce 134.61.11.17..5.
0e00 0000 fedc ace4 4900 0046 ea00 0000 ........I..F....
0000 0000 0200 0000 0000 0000 0800 0000 ................
0100 0000 0054 5441 0100 0000 1c00 0000 .....TTA........
0100 0000 0100 0100 0100 0000 0100 0105 ................
0901 0100 0100 0000 0901 0100 ............
omniORB: inputMessage: from giop:tcp:134.61.11.138:43867 24 bytes
omniORB:
4749 4f50 0102 0101 0c00 0000 0400 0000 GIOP............
0000 0000 0000 0000 ........
omniORB: LocateRequest to remote: root<0>
omniORB: Client attempt to connect to giop:tcp:134.61.11.138:39881
omniORB: Client opened connection to giop:tcp:134.61.11.138:39881
omniORB: sendChunk: to giop:tcp:134.61.11.138:39881 38 bytes
omniORB:
4749 4f50 0102 0103 1a00 0000 0200 0000 GIOP............
0000 0000 0e00 0000 feb7 ace4 4900 0056 ............I..V
a500 0000 0000 ......
omniORB: inputMessage: from giop:tcp:134.61.11.138:39881 20 bytes
omniORB:
4749 4f50 0102 0104 0800 0000 0200 0000 GIOP............
0100 0000 ....
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: sendChunk: to giop:tcp:134.61.11.138:39881 236 bytes
omniORB:
4749 4f50 0102 0100 e000 0000 0400 0000 GIOP............
0300 0000 0000 0000 0e00 0000 feb7 ace4 ................
4900 0056 a500 0000 0000 0000 0b00 0000 I..V............
696e 6974 6961 6c69 7a65 0000 0100 0000 initialize......
0100 0000 0c00 0000 0100 0000 0100 0100 ................
0901 0100 0000 0000 0100 0000 1b00 0000 ................
4944 4c3a 4f6d 6e69 5072 6f67 7265 7373 IDL:OmniProgress
4f75 7470 7574 3a31 2e30 0000 0100 0000 Output:1.0......
0000 0000 6400 0000 0101 0200 0d00 0000 ....d...........
3133 342e 3631 2e31 312e 3137 0000 35ce 134.61.11.17..5.
0e00 0000 fedc ace4 4900 0046 ea00 0000 ........I..F....
0000 0000 0200 0000 0000 0000 0800 0000 ................
0100 0000 0054 5441 0100 0000 1c00 0000 .....TTA........
0100 0000 0100 0100 0100 0000 0100 0105 ................
0901 0100 0100 0000 0901 0100 ............
omniORB: inputMessage: from giop:tcp:134.61.11.138:39881 24 bytes
omniORB:
4749 4f50 0102 0101 0c00 0000 0400 0000 GIOP............
0000 0000 0000 0000 ........
[continues ...]
Tim Theisen
2009-04-23 18:37:08 UTC
Permalink
omniORB should not be picking 127.0.0.2. According to RFC 1700 (Page
5):

Special Addresses

...

(g) {127, <any>}

Internal host loopback address. Should never appear outside
a host.

So, anything starting with 127 is a loopback address.

...Tim
--
Tim Theisen Lead Research Software Engineer
Phone: +1 608 824 2848 TomoTherapy Incorporated
Fax: +1 608 824 2996 1240 Deming Way
Web: http://www.tomotherapy.com Madison, WI 53717-1954
-----Original Message-----
From: omniorb-list-***@omniorb-support.com
[mailto:omniorb-list-***@omniorb-support.com] On Behalf Of Duncan
Grisby
Sent: Monday, April 20, 2009 04:49
To: Nikolas Kauer
Cc: omniorb-***@omniorb-support.com; Stefan Karg
Subject: Re: [omniORB] incorrect IP address after update to SuSE 11.1
Post by Nikolas Kauer
After the sysadmin updated machines to SuSE 11.1, the
server/client produces an IOR string with incorrect IP
$ catior
IOR:010000001300000049444c3a4f6d6e69576f726b65723a312e300000010000000000
000060000000010102000a0000003132372e302e302e32008eb70e000000fede1de64900
006d4c000000000000000200000000000000080000000100000000545441010000001c00
000001000000010001000100000001000105090101000100000009010100
Post by Nikolas Kauer
Type ID: "IDL:OmniWorker:1.0"
1. IIOP 1.2 127.0.0.2 46990 "....I..mL....."
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16
On SuSE 10.x systems this problem does not occur. We have
been using omniORB-4.0.7, so far without any problems (Thanks,
Duncan!). We checked that the following holds also on the
SuSE 11.1 systems: The correct IP address is returned by
"nslookup <hostname>", "hostname -i" and "/sbin/ifconfig -a".
/etc/hosts does not contain 127.0.0.2.
Please run with -ORBtraceLevel 25 and send the output.
Post by Nikolas Kauer
Section 8.6 of the omni40 docs states "If the host is empty, the
ORB published the IP address of the first non-loopback network
interface it can find (or the loopback if that is the only
interface), ..." How does this actually work?
omniORB asks the OS for all its IP addresses, and picks the first one
that is not 127.0.0.1. You strangely have an address of 127.0.0.2, so if
that is the first one in the list, omniORB will pick that.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Duncan Grisby
2009-04-22 15:31:19 UTC
Permalink
Post by Nikolas Kauer
Post by Duncan Grisby
Please run with -ORBtraceLevel 25 and send the output.
Below is traceLevel = 40 output: first for a run on SuSE 11.1,
which fails with CORBA::SystemException, second the same
statically linked executable run on SuSE 10.x without
encountering the problem.
That shows a client failing to connect to a server on 127.0.0.2. That's
not where the problem is. We need to see the server trace to understand
why the wrong address is in the object references.

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Nikolas Kauer
2009-04-22 21:07:27 UTC
Permalink
Post by Duncan Grisby
We need to see the server trace to understand
why the wrong address is in the object references.
Server trace (level 25):

omniORB: Configuration file "/net/home/lxtsfs1/tpe/reuak/omniORB.cfg" either does not exist or is not a file. No settings read.
omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 127.0.0.1
omniORB: 127.0.0.2
omniORB: 134.61.11.50
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: ISO-8859-1 UTF-8.
omniORB: Transmission char code sets: ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0) UTF-8(1.2) UTF-8(1.1).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname =
omniORB: bootstrapAgentPort = 900
omniORB: clientCallTimeOutPeriod = 0
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = /net/home/lxtsfs1/tpe/reuak/omniORB.cfg
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublishAllIFs = 0
omniORB: giopMaxMsgSize = 2097152
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 2147483647
omniORB: maxSocketSend = 2147483647
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: omniORB_27_CompatibleAnyExtraction = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
omniORB: strictIIOP = 1
omniORB: supportBootstrapAgent = 0
omniORB: supportCurrent = 1
omniORB: supportPerThreadTimeOut = 0
omniORB: tcAliasExpand = 0
omniORB: threadPerConnectionLowerLimit = 9000
omniORB: threadPerConnectionPolicy = 1
omniORB: threadPerConnectionUpperLimit = 10000
omniORB: threadPoolWatchConnection = 1
omniORB: traceExceptions = 1
omniORB: traceFile = [stderr]
omniORB: traceInvocations = 0
omniORB: traceLevel = 25
omniORB: traceThreadId = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Initialising incoming endpoints.
omniORB: Bind to address 0.0.0.0.
omniORB: Starting serving incoming endpoints.
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: giopRendezvouser task execute for giop:tcp:127.0.0.2:42817
omniORB: Adding root<0> (activating) to object table.
omniORB: State root<0> (activating) -> active
omniORB: Creating ref to local: root<0>
target id : IDL:OmniProgressOutput:1.0
most derived id: IDL:OmniProgressOutput:1.0
gg2WW: OmniComp master process started
omniORB: Creating ref to remote: root<0>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:OmniWorker:1.0
1 worker(s) found
omniORB: LocateRequest to remote: root<0>
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 2
omniORB: Client attempt to connect to giop:tcp:127.0.0.2:50903
omniORB: Scavenger task execute.
omniORB: Switch rope to use address giop:tcp:127.0.0.2:50903
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(0,NO,TRANSIENT_ConnectFailed)
gg2WW: CORBA::SystemException
omniORB: Preparing to shutdown ORB.
omniORB: Destroying POA(RootPOA).
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: State root<0> (active) -> deactivating (OA destruction)
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: State root<0> (deactivating OA) -> etherealising
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Removing root<0> (etherealising) from object table
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: All object adapters inactive. Stopping serving incoming endpoints.
omniORB: giopServer deactivate...
omniORB: Terminate rendezvousers...
omniORB: giopRendezvouser for giop:tcp:127.0.0.2:42817 terminate...
omniORB: giopServer terminate connection from giop:tcp:127.0.0.2:40945.
omniORB: giopRendezvouser for endpoint giop:tcp:127.0.0.2:42817 exit.
omniORB: Rendezvousers terminated.
omniORB: giopServer deactivated.
omniORB: Destruction of POA(RootPOA) complete.
omniORB: Shutting-down all incoming endpoints.
omniORB: TCP endpoint shut down.
omniORB: Disable ObjRef(IDL:OmniWorker:1.0) root<0>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef(IDL:OmniProgressOutput:1.0) root<0>
omniORB: Object table entry root<0> (dead) deleted.
omniORB: 2 object references present at ORB shutdown.
omniORB: ORB shutdown is complete.
omniORB: Terminate strand scavenger.
omniORB: Close remaining strands.
omniORB: 0 remaining bidir ropes deleted.
omniORB: 0 remaining ropes deleted.
omniORB: Clear endPoint options.
omniORB: AsyncInvoker: thread id = 1 has exited. Total threads = 2
omniORB: AsyncInvoker: thread id = 2 has exited. Total threads = 1
omniORB: AsyncInvoker: deleted.
omniORB: Final clean-up
omniORB: Deleted 4 nil object references and 0 other tracked objects.
omniORB: Final clean-up completed.
-----------------------------------------------------
$ grep 127.0.0.1 /etc/hosts
127.0.0.1 localhost
$ grep 127.0.0.2 /etc/hosts
[no output]
$ hostname -i
134.61.11.50
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:13:D4:44:F5:DB
inet addr:134.61.11.50 Bcast:134.61.11.255 Mask:255.255.254.0
inet6 addr: fe80::213:d4ff:fe44:f5db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8313043 errors:0 dropped:0 overruns:0 frame:0
TX packets:6722116 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1904775160 (1816.5 Mb) TX bytes:1334494897 (1272.6 Mb)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10501 errors:0 dropped:0 overruns:0 frame:0
TX packets:10501 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1349040 (1.2 Mb) TX bytes:1349040 (1.2 Mb)
$ more /etc/SuSE-release
openSUSE 11.1 (i586)
VERSION = 11.1
Peter Klotz
2009-04-22 22:03:11 UTC
Permalink
Post by Nikolas Kauer
$ /sbin/ifconfig
...

Strange, what does "sudo ip addr show" tell?

Regards, Peter.
Nikolas Kauer
2009-04-23 16:05:01 UTC
Permalink
Post by Peter Klotz
Strange, what does "sudo ip addr show" tell?
lxte156:~ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 00:13:d4:44:f5:db brd ff:ff:ff:ff:ff:ff
inet 134.61.11.50/23 brd 134.61.11.255 scope global eth0
inet6 fe80::213:d4ff:fe44:f5db/64 scope link
valid_lft forever preferred_lft forever

The second inet entry is indeed 127.0.0.2. (Not sure how that
comes about.) Maybe omniORB should generally use the first inet
entry under 2: as IP address?
Duncan Grisby
2009-04-30 20:55:22 UTC
Permalink
Post by Tim Theisen
omniORB should not be picking 127.0.0.2. According to RFC 1700 (Page
Special Addresses
...
(g) {127, <any>}
Internal host loopback address. Should never appear outside
a host.
So, anything starting with 127 is a loopback address.
You're right. I've never seen a machine with anything other than
127.0.0.1 as the IPv4 loopback, though. I've modified omniORB in CVS to
skip anything beginning 127. unless that's all there is.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...