[Ace-users] [tao-users] [PRF] Hello test failing on an IPv6-enabled host

Andre Kostur akostur at incognito.com
Fri Jun 29 17:10:07 CDT 2007


    TAO VERSION: 1.5.9
    ACE VERSION: 5.5.9

    HOST MACHINE and OPERATING SYSTEM:
	Intel Core 2 Duo (Quad core), 4 GB RAM, Windows XP-64, SP2

    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
	32-bit executable, not 64.

    COMPILER NAME AND VERSION (AND PATCHLEVEL): Visual Studio 2005, SP1

    THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
    specific file, simply state which one]:
#define ACE_AS_STATIC_LIBS 			1 
#define TAO_AS_STATIC_LIBS 			1 
#define ACE_HAS_STANDARD_CPP_LIBRARY		1 
#define ACE_HAS_IPV6				1 
#define ACE_USES_IPV4_IPV6_MIGRATION               1 
#define _CRT_SECURE_NO_DEPRECATE			1 
#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++)]: n/a

    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
    (used by MPC when you generate your own makefiles):
ssl = 1
ipv6 = 1

    AREA/CLASS/EXAMPLE AFFECTED:
	Hello

    DOES THE PROBLEM AFFECT:
        COMPILATION? No
        LINKING? No
        EXECUTION? Yes
        OTHER (please specify)? No

    SYNOPSIS:
The hello test does not complete if the host has IPv6 addresses.

    DESCRIPTION:
Launched server.exe in one window, launched client.exe in another
window.  The IIOP connection appears to have been established, but no
corba call appears to go across.  If you launch server.exe specifying
only an IPv6 endpoint, it works.

    REPEAT BY:

Script of server.exe:


C:\CVS\CVS.2005\ACETAO5.5.9\TAO\tests\Hello\Static_Release>server
-ORBDebugLevel
 10
TAO (4072|2956) Initializing the process-wide services
TAO (4072|2956) Default ORB - global initialization completed.
TAO (4072|2956) Initializing the orb-specific services
TAO (4072|2956) Default_Resource_Factory - unable to create codeset
manager.
TAO (4072|2956) ORB_Core: Codeset Manager not available
TAO (4072|2956) Loaded default protocol <IIOP_Factory>
TAO (4072|2956) created new ORB <>
TAO (4072|2956) - IIOP_Acceptor::open_i, listening on:
<192.168.126.1:2373>
TAO (4072|2956) - IIOP_Acceptor::open_i, listening on:
<192.168.62.1:2373>
TAO (4072|2956) - IIOP_Acceptor::open_i, listening on:
<192.168.75.32:2373>
TAO (4072|2956) - IIOP_Acceptor::open_i, trying to listen on port 2373
TAO (4072|2956) - IIOP_Acceptor::open_i, listening on: <::1:2373>
TAO (4072|2956) - ORB_Core::run, start [run]
TAO (4072|2956) - ORB_Core::run, calling handle_events()
TAO (4072|2956) - Transport_Cache_Manager::fill_set_i, current_size = 0,
cache_m
aximum = 512
TAO (4072|2956) - Concurrency_Strategy::activate_svc_handler, opened as
TAO_SERV
ER_ROLE
TAO (4072|2956) - IIOP_Connection_Handler::open, The local addr is
<192.168.126.
1:2373>
TAO (4072|2956) - IIOP_Connection_Handler::open, IIOP connection to peer
<192.16
8.126.1:2374> on 604
TAO (4072|2956) - Transport_Cache_Manager::bind_i, 0x12eca4 -> 0x1d87148
Transpo
rt[604]
TAO (4072|2956) - Transport_Cache_Manager::bind_i, cache size is [1]
TAO (4072|2956) - Transport[604]::register_handler
TAO (4072|2956) - ORB_Core::run, handle_events() returns 1
TAO (4072|2956) - ORB_Core::run, calling handle_events()


Script of client.exe:

C:\CVS\CVS.2005\ACETAO5.5.9\TAO\tests\Hello\Static_Release>client
-orbdebuglevel
 10
TAO (4552|4104) Initializing the process-wide services
TAO (4552|4104) Default ORB - global initialization completed.
TAO (4552|4104) Initializing the orb-specific services
TAO (4552|4104) Default_Resource_Factory - unable to create codeset
manager.
TAO (4552|4104) ORB_Core: Codeset Manager not available
TAO (4552|4104) Loaded default protocol <IIOP_Factory>
TAO (4552|4104) created new ORB <>
TAO (4552|4104) - Transport_Cache_Manager::find_i, no idle transport is
availabl
e
TAO (4552|4104) - Transport_Cache_Manager::fill_set_i, current_size = 0,
cache_m
aximum = 512
TAO (4552|4104) - IIOP_Connector::begin_connection, to
<192.168.126.1:2373> whic
h should block
TAO (4552|4104) - Transport_Connector::wait_for_connection_completion,
going to
wait for connection completion on transport[30626968]
TAO (4552|4104) - Leader_Follower[30626968]::wait_for_event, (leader)
enter reac
tor event loop


At those points, the two processes stall.

However, executing server.exe specifying an IPv6 endpoint succeeds as
follows:

C:\CVS\CVS.2005\ACETAO5.5.9\TAO\tests\Hello\Static_Release>server
-ORBDebugLevel
 10 -ORBEndpoint iiop://[fe80::218:8bff:fe84:bdbf%7]
TAO (5180|5420) Initializing the process-wide services
TAO (5180|5420) Default ORB - global initialization completed.
TAO (5180|5420) Initializing the orb-specific services
TAO (5180|5420) Default_Resource_Factory - unable to create codeset
manager.
TAO (5180|5420) ORB_Core: Codeset Manager not available
TAO (5180|5420) Loaded default protocol <IIOP_Factory>
TAO (5180|5420) created new ORB <>
TAO (5180|5420) - IIOP_Acceptor::open,
address==[fe80::218:8bff:fe84:bdbf%7], op
tions=(null)
TAO (5180|5420) - IIOP_Acceptor::open, specified
host=fe80::218:8bff:fe84:bdbf%7
:0
TAO (5180|5420) - IIOP_Acceptor::open_i, listening on:
<fe80::218:8bff:fe84:bdbf
%7:1158>
TAO (5180|5420) - ORB_Core::run, start [run]
TAO (5180|5420) - ORB_Core::run, calling handle_events()
TAO (5180|5420) - Transport_Cache_Manager::fill_set_i, current_size = 0,
cache_m
aximum = 512
TAO (5180|5420) - Concurrency_Strategy::activate_svc_handler, opened as
TAO_SERV
ER_ROLE
TAO (5180|5420) - IIOP_Connection_Handler::open, The local addr is
<fe80::218:8b
ff:fe84:bdbf%7:1158>
TAO (5180|5420) - IIOP_Connection_Handler::open, IIOP connection to peer
<[fe80:
:218:8bff:fe84:bdbf%7]:1161> on 624
TAO (5180|5420) - Transport_Cache_Manager::bind_i, 0x12eca4 -> 0x1d86710
Transpo
rt[624]
TAO (5180|5420) - Transport_Cache_Manager::bind_i, cache size is [1]
TAO (5180|5420) - Transport[624]::register_handler
TAO (5180|5420) - ORB_Core::run, handle_events() returns 1
TAO (5180|5420) - ORB_Core::run, calling handle_events()
TAO (5180|5420) - Connection_Handler[624]::handle_input, handle =
624/624
TAO (5180|5420) - Transport[624]::handle_input
TAO (5180|5420) - Transport[624]::process_queue_head, 0 enqueued
TAO (5180|5420) - Transport[624]::handle_input_parse_data, enter
TAO (5180|5420) - Transport[624]::handle_input_parse_data, read 76 bytes
TAO (5180|5420) - GIOP_Message_State::parse_message_header_i
TAO (5180|5420) - GIOP_Message_State::get_version_info
TAO (5180|5420) - GIOP_Message_State::get_byte_order_info
TAO (5180|5420) - Transport[624]::process_parsed_messages, entering
(missing dat
a == 0)
TAO (5180|5420) - GIOP_Message_Base::dump_msg, recv GIOP v1.2 msg, 64
data bytes
, my endian, Type Request[1]
GIOP message - HEXDUMP 76 bytes
47 49 4f 50 01 02 01 00  40 00 00 00 01 00 00 00   GIOP.... at .......
03 00 00 00 00 00 00 00  1b 00 00 00 14 01 0f 00   ................
52 53 54 ec 81 85 46 37  9c 04 00 00 00 00 00 01   RST...F7........
00 00 00 01 00 00 00 00  0b 00 00 00 67 65 74 5f   ............get_
73 74 72 69 6e 67 00 00  00 00 00 00               string......
TAO (5180|5420) - GIOP_Message_Base::dump_msg, send GIOP v1.2 msg, 29
data bytes
, my endian, Type Reply[1]
GIOP message - HEXDUMP 41 bytes
47 49 4f 50 01 02 01 01  1d 00 00 00 01 00 00 00   GIOP............
00 00 00 00 00 00 00 00  0d 00 00 00 48 65 6c 6c   ............Hell
6f 20 74 68 65 72 65 21  00                        o there!.
TAO (5180|5420) - Transport[624]::cleanup_queue, byte_count = 41
TAO (5180|5420) - Transport[624]::cleanup_queue, after transfer, bc = 0,
all_sen
t = 1, ml = 0
TAO (5180|5420) - Transport[624]::drain_queue_helper, byte_count = 41,
head_is_e
mpty = 1
TAO (5180|5420) - Transport[624]::drain_queue_i, helper retval = 1
TAO (5180|5420) - Connection_Handler[624]::handle_input, handle =
624/624, retva
l = 0
TAO (5180|5420) - ORB_Core::run, handle_events() returns 1
TAO (5180|5420) - ORB_Core::run, calling handle_events()
TAO (5180|5420) - Connection_Handler[624]::handle_input, handle =
624/624
TAO (5180|5420) - Transport[624]::handle_input
TAO (5180|5420) - Transport[624]::process_queue_head, 0 enqueued
TAO (5180|5420) - Transport[624]::handle_input_parse_data, enter
TAO (5180|5420) - Transport[624]::handle_input_parse_data, read 76 bytes
TAO (5180|5420) - GIOP_Message_State::parse_message_header_i
TAO (5180|5420) - GIOP_Message_State::get_version_info
TAO (5180|5420) - GIOP_Message_State::get_byte_order_info
TAO (5180|5420) - Transport[624]::process_parsed_messages, entering
(missing dat
a == 0)
TAO (5180|5420) - GIOP_Message_Base::dump_msg, recv GIOP v1.2 msg, 64
data bytes
, my endian, Type Request[2]
GIOP message - HEXDUMP 76 bytes
47 49 4f 50 01 02 01 00  40 00 00 00 02 00 00 00   GIOP.... at .......
00 00 00 00 00 00 00 00  1b 00 00 00 14 01 0f 00   ................
52 53 54 ec 81 85 46 37  9c 04 00 00 00 00 00 01   RST...F7........
00 00 00 01 00 00 00 00  09 00 00 00 73 68 75 74   ............shut
64 6f 77 6e 00 67 00 00  00 00 00 00               down.g......
TAO (5180|5420) - Connection_Handler[624]::handle_input, handle =
624/624, retva
l = 0
TAO (5180|5420) - ORB_Core::run, handle_events() returns 1
TAO (5180|5420) - ORB_Core::run, ends with result = 1
(5180|5420) server - event loop finished
CORBA::ORB::destroy() called on ORB <>.
Destroying ORB <>
TAO (5180|5420) - Connection_Handler[624]::close_connection_eh, purging
entry fr
om cache
TAO (5180|5420) - Transport[624]::cleanup_queue_i, cleaning up complete
queue
TAO (5180|5420) - Transport[624]::cleanup_queue_i, discarded 0 messages,
0 bytes
.
TAO (5180|5420) - Connection_Handler[624]::close_connection_eh, removing
from th
e reactor
TAO (5180|5420) - Connection_Handler[624]::close_connection_eh, cancel
all timer
s
TAO (5180|5420) - Transport[624]::cleanup_queue_i, cleaning up complete
queue
TAO (5180|5420) - Transport[624]::cleanup_queue_i, discarded 0 messages,
0 bytes
.
TAO (5180|5420) - Connection_Handler[624]::close_connection_eh
TAO (5180|5420) - Transport[624]::cleanup_queue_i, cleaning up complete
queue
TAO (5180|5420) - Transport[624]::cleanup_queue_i, discarded 0 messages,
0 bytes.


A couple more quick tests:

server -ORBDebugLevel 10 -ORBEndpoint
iiop://[fe80::218:8bff:fe84:bdbf%7];iiop://192.168.75.32

Works, but:

server -ORBDebugLevel 10 -ORBEndpoint
iiop://192.186.75.32;iiop://[fe80::218:8bff:fe84:bdbf%7]

Fails.  Appears that if the first endpoint is an IPv4 address, it will
fail.


    SAMPLE FIX/WORKAROUND:
None



More information about the Ace-users mailing list