Summary: | ImplRepoC.cpp fails to compile | ||
---|---|---|---|
Product: | TAO | Reporter: | storri |
Component: | Implementation Repository | Assignee: | DOC Center Support List (internal) <tao-support> |
Status: | CLOSED --- | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 1.2.8 | ||
Hardware: | x86 | ||
OS: | Linux |
Description
storri
2002-12-30 16:18:34 CST
Corrected component field. Reassigned to tao-support. Not mine. Stephen, it looks like your workspace is out of date. We build on this platform every day and have no problems. Moreover, the problems you're seeing are coming from TAO IDL generated code, so it's almost certainly an inconsistency with your workspace. Please try doing a "make realclean" and trying again from scratch. I did "make realclean" in the ACE_wrappers directory. This cleaned up everything except for TAO. I did realclean in TAO and rebuild ace, gperf, TAO_IDL before trying tao. I still failed at the same spot. So now I provide the configuration files in the hope that I have been silly. include/makeinclude/platform_macros.GNU: debug=0 optimize=0 static_libs_only=1 interceptors=0 rtcorba=1 exceptions=0 include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU ace/config.h: #define ACE_COMPILE_TIMEPROBES #include "ace/config-linux.h" Looks like a real bug to me. Triggered by your interceptors=0 basically that changes the expansion of TAO_INTERCEPTOR_THROW() from an ACE_TRY_CHECK to a real ACE_THROW, apparently the code in ImplRepoC.cpp was incorrectly hand-crafted or generated with a version of the IDL compiler that generated incorrect code for this case. Yes, its is a bug. Why doesnt our build that runs with interceptors disabled not catch this? That is because exceptions have been turned off. Pressed commit too early :(! The combination of exceptions turned off and interceptors turned off created this problem and hid this from our daily builds. Venkita provided this patch of what it took to get ImplRepoC.cpp to compile: diff -u -r1.19 ImplRepoC.cpp --- ImplRepoC.cpp 4 Sep 2002 18:31:34 -0000 1.19 +++ ImplRepoC.cpp 2 Jan 2003 16:52:57 -0000 @@ -4082,8 +4082,9 @@ if (_invoke_status == TAO_INVOKE_EXCEPTION) { - TAO_INTERCEPTOR_THROW ( - CORBA::UNKNOWN (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES) + TAO_INTERCEPTOR_THROW_RETURN ( + CORBA::UNKNOWN (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES), + _tao_retval ); } @@ -4773,9 +4774,8 @@ if (_invoke_status == TAO_INVOKE_EXCEPTION) { - TAO_INTERCEPTOR_THROW_RETURN ( - CORBA::UNKNOWN (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES), - _tao_retval + TAO_INTERCEPTOR_THROW ( + CORBA::UNKNOWN (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES) ); } So now the task that is left is to figure out why the tao_idl compiler does not generate this same code. Have you confirmed that it is a TAO_IDL compiler bug or whether the bug was introduced during some handcrafting? Fixed. See: ChangeLogTag: Thu Jan 2 10:33:29 2003 Boris S Kolpackov <boris@isis-server.isis.vanderbilt.edu> |