[tao-bugs] Too many IP Addresses

Winston JENKS Winston.JENKS at capesoftware.com
Sat Oct 22 01:19:35 CDT 2016


    TAO VERSION: 2.3.3
    ACE VERSION: 6.3.3

    HOST MACHINE and OPERATING SYSTEM:  Windows 7 SP1, Windows Server 2012 R2
        If on Windows based OS's, which version of WINSOCK do you
        use?:

    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
    COMPILER NAME AND VERSION (AND PATCHLEVEL):

    THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
    specific file, simply state which one]:
         #define ACE_HAS_MFC 0
         #include "ace/config-win32.h"

    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
    use a link to a platform-specific file, simply state which one
    (unless this isn't used in this case, e.g., with Microsoft Visual
    C++)]:  Tested with VS 2012  ( and version VC6 with ACE v5.4.1 )

    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
    (used by MPC when you generate your own makefiles): <empty>

    AREA/CLASS/EXAMPLE AFFECTED:
tao_cosnaming, and our tao client

    DOES THE PROBLEM AFFECT:
        COMPILATION? NO
        LINKING? NO
        EXECUTION? YES

    SYNOPSIS:
On a machine with more than 63 (possibly 62) IP Addresses (not sure if per-interface or globally) my TAO client and tao_cosnaming.exe crash.

    DESCRIPTION:
On machines with quite a few IP Addresses (in this case static IPs all assigned to the same interface), tao_cosnaming.exe will throw an exception and quit at startup.  While trying to narrow down the cause, our tao test client (normally very reliable) will throw an INTERNAL exception when calling resolve_initial_references("RootPOA").  TAO servers can avoid this issue by specifying a particular IP Address with -ORBListenEndpoints.

The NamingViewer.exe runs correctly even when there are > 63 IP addresses present in the system.  The NamingViewer does call resolve_initial_references("NameService"), but does NOT appear to call resolve_initial_references("RootPOA").

    REPEAT BY:
In an elevated command prompt, create a number of IP Addresses on an interface.  First line below is explanation-replace items in braces. Second line is an example of how to create 111 addresses from 192.168.30.10->120.  Note that if you have your {InterfaceName} set to DHCP, the first time you run this, you will reset the adapter to the static IP address you define.  So either start with a static IP address already set, or run netsh first with an IP address that is on your network.  I used an IP addresses (192.168.30/24) outside our normal subnet to avoid collisions.
   C:> REM for /L %A IN ({start},1,{end}) DO netsh interface ip add address "{InterfaceName}" 192.168.30.%A {mask}
   C:> for /L %A IN (10,1,120) DO netsh interface ip add address "Local Area Connection" 192.168.30.%A 255.255.255.0
(Also note, on Windows 7, the mouse may be jerky initially after this command, but it settled down for me after a while. Windows Server 2012 had no discernable discomfort with this.)

Then run tao_cosnaming.exe.
Error including "(endpoint initialization failure in Acceptor Registry; unspecified errno)" is displayed.

I tested this with TAO 6.3.3 on Windows 7.  We have older version of TAO (1.4.1) also running on Windows 7 and Windows Server 2012 R2 where naming_server and the call to resolve_initial_references("RootPOA") also suffers from same behavior.

    SAMPLE FIX/WORKAROUND:

A)  Reduce the number of IP addresses in the system (might be a per-interface limit).
C:> for /L %A IN (70,1,120) DO netsh interface ip delete address "Local Area Connection" 192.168.30.%A
This leaves only addresses from 192.168.30.10-69 on your system.  Now things work again.

B)  For TAO servers AND TAO CLIENTS THAT CALL resolve_initial_references("RootPOA"), limit the addresses they listen on with -ORBListenEndpoints

That very last part above is the key workaround. A client that calls resolve_initial_references("RootPOA") will receive an INTERNAL exception unless the number of interfaces to listen on was restricted by passing something like -ORBListenEndpoints iiop://192.168.3.239, which limits whatever happens in resolve_initial_references ("RootPOA") to fewer IP addresses and prevents the INTERNAL exception.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.isis.vanderbilt.edu/pipermail/tao-bugs/attachments/20161022/f0d75fb2/attachment.html>


More information about the tao-bugs mailing list