[Ace-users] TAO IFR does not support Struct or a struct llist, whose members has recursive struct, as operation return type

wodaxia xushijie1982 at yahoo.com.cn
Wed Nov 28 03:08:26 CST 2007


    ACE VERSION: 5.5a

    HOST MACHINE and OPERATING SYSTEM:
    SunOS zsups202 5.10 Generic sun4u sparc SUNW,Sun-Fire-480R
(Solaris 10)

    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
    COMPILER NAME AND VERSION (AND PATCHLEVEL):
     CC(workshop_c++-11.0_p1/SUNWspro): Sun C++ 5.8 Patch 121017-10
2007/02/21
     gcc version 3.4.3
     GNU Make 3.81
    CONTENTS OF $ACE_ROOT/ace/config.h [if you use a link to a
platform-
    specific file, simply state which one]:
    #include "ace/config-sunos5.8.h"
    #include "ace/config-sunos5.9.h"
    #include "ace/config-sunos5.10.h"

    CONTENTS OF $ACE_ROOT/include/makeinclude/platform_macros.GNU [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++)]:
    include $(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU

    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/
default.features
    (used by MPC when you generate your own makefiles):
    *_ROOT
    TAO_ROOT,  $ACE_ROOT/TAO
    CIAO_ROOT, $TAO_ROOT/CIAO


    LEVEL OF URGENCY (LOW, MEDIUM, or HIGH):
    HIGH
    AREA/CLASS/EXAMPLE AFFECTED:
[What example failed?  What module failed to compile?]
    Tao_ifr aborts when we repeat putting the same IDL file which
includes 'typedef' to the IFR.
    DOES THE PROBLEM AFFECT: YES
        COMPILATION?  NO
        LINKING?      NO
            On Unix systems, did you run make realclean first?
        EXECUTION?   YES
        OTHER (please specify)?
[Please indicate whether ACE, your application, or both are affected.]
    Our client application that uses IFR service to construct DII
request is impacted.
    SYNOPSIS:
[Brief description of the problem]
The process IFR_Service crashes when an IDL file is inserted into it
using tao_ifr. and the following exceptions is thrown out:

19586|1) EXCEPTION, ifr_adding_visitor_operation::visit_operation
system exception, ID 'IDL:omg.org/CORBA/COMM_FAILURE:1.0'
TAO exception, minor code = 6 (failed to recv request response;
ENOENT), completed = MAYBE

(ifr_adding_visitor.cpp:106) ifr_adding_visitor::visit_scope - failed
to accept visitor
(ifr_adding_visitor.cpp:2650) ifr_adding_visitor::create_interface_def
- visit_scope failed
(ifr_adding_visitor.cpp:106) ifr_adding_visitor::visit_scope - failed
to accept visitor
(ifr_adding_visitor.cpp:217) ifr_adding_visitor::visit_module -
visit_scope failed
(ifr_adding_visitor.cpp:106) ifr_adding_visitor::visit_scope - failed
to accept visitor
(ifr_adding_visitor.cpp:2177) ifr_adding_visitor::visit_root -
visit_scope failed
(be_produce.cpp:221) BE_produce - failed to accept adding visitor
Fatal Error - Aborting
[2]  - Segmentation fault



 DESCRIPTION:
[Detailed description of problem.  Don't just say "<blah> doesn't
work, here's a fix," explain what your program does to get to the
<blah> state. ]

This exception seems to show up when a list of structs or a struct,
one of whoes members is recursion struct, is used as the return
parameter from an operation. In the following sample IDL, line 12 and
14 will be OK, but line 11 and 13 will produce the above exception and
IFR service to crash down.

//FMK_ItString.idl
1: struct FMK_JobInfo {
2:     sequence<FMK_JobInfo> children;    // ERROR IN WICL IDL files
defination
3:     // sequence<string> children;        //OK
4: };
5: struct JobSummary {
6:  FMK_JobInfo jobInfo;
7: } ;
8: typedef sequence<JobSummary> FMK_ItSeqJobSummary;   //error   in
WICL IDL files
9: definatopm
10:  interface aaa {
11:      //FMK_ItSeqJobSummary op(in string a, in string b);   //Error
12:      //FMK_ItSeqJobInfo op_1();                       //OK
13:      //JobSummary op_2();                               //Error
14:       //FMK_JobInfo op_3();                              //OK
12: };


    REPEAT BY:
[What you did to get the error; include test program or session
transcript if at all possible.  ]
    Run the command repeatly:
 Start up IFR Service:
     $TAO_ROOT/orbsvcs/IFR_Service/IFR_Service -o if_repo.ior &
Put IDL file into the IFR:
  $ACE_ROOT/bin/tao_ifr -v -ORBInitRef InterfaceRepository=file://
if_repo.ior FMK_ItString.idl

   SAMPLE FIX/WORKAROUND:
[If available ]


More information about the Ace-users mailing list