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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions