Skip to content

TAO::TAO_CO_THRU_POA_STRATEGY bit missing from CosEventChannelAdmin::EventChannel->for_suppliers(), causing it to throw CORBA system exception #2091

@alexchandel

Description

@alexchandel

Version

ACE: 7.0.11, TAO: 3.0.11 (and others)

Host machine and operating system

Occurs on all attempted builds (Windows and macOS).

Compiler name and version (including patch level)

Apple clang version 14.0.3 (clang-1403.0.22.14.1) and VS 2022

The $ACE_ROOT/ace/config.h file

ace/config-windows.h or ace/config-macosx-mojave.h

The $ACE_ROOT/include/makeinclude/platform_macros.GNU file

None. (Using CMake build)

Contents of $ACE_ROOT/bin/MakeProjectCreator/config/default.features

None.

AREA/CLASS/EXAMPLE AFFECTED:

CosEventChannelAdmin::EventChannel and possibly other generated client code.

The problem effects:

Runtime.

Synopsis

Invoking ->for_suppliers() on a CosEventChannelAdmin::EventChannel results in an internal system exception.

Description

When using ACE+TAO built with CMake, invoking ->for_suppliers() on a CosEventChannelAdmin::EventChannel results in an internal system exception. This is because the TAO::TAO_CO_THRU_POA_STRATEGY bit is not passed to the TAO::Invocation_Adapter constructor within the source implementation of that function (CosEventChannelAdminC.cpp).

  TAO::Invocation_Adapter _invocation_call (
      this,
      _the_tao_operation_signature,
      1,
      "for_suppliers",
      13,
      TAO::TAO_CO_NONE,
      TAO::TAO_TWOWAY_INVOCATION
      ,
      TAO::TAO_SYNCHRONOUS_INVOCATION,
      false
    );

However, when built with the "full source distribution" with build files already present, the Invocation_Adapter is constructed with the TAO::TAO_CO_THRU_POA_STRATEGY bit, as follows:

  TAO::Invocation_Adapter _invocation_call (
      this,
      _the_tao_operation_signature,
      1,
      "for_suppliers",
      13,
      TAO::TAO_CO_NONE | TAO::TAO_CO_THRU_POA_STRATEGY,
      TAO::TAO_TWOWAY_INVOCATION
      ,
      TAO::TAO_SYNCHRONOUS_INVOCATION,
      false
    );

What causes this bit to be missing?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions