Skip to content

Add const reference service callback signatures - #3269

Open
KR-Ravindra wants to merge 1 commit into
ros2:rollingfrom
KR-Ravindra:feat/service-callback-const-ref
Open

KR-Ravindra wants to merge 1 commit into
ros2:rollingfrom
KR-Ravindra:feat/service-callback-const-ref

Conversation

@KR-Ravindra

@KR-Ravindra KR-Ravindra commented Sep 13, 2026 •

Copy link
Copy Markdown

Problem

AnySubscriptionCallback accepts const MessageT & callbacks, but AnyServiceCallback only accepts std::shared_ptr signatures. Every service callback therefore has to take shared_ptrs (the response one is copied per call) even when the handler answers immediately and never needs to extend the request/response lifetime. This is inconsistent with subscriptions.

Design

Follows the approach suggested in the issue: the request and response keep arriving as shared_ptr internally; dispatch() dereferences them for the user callback, exactly like AnySubscriptionCallback does for const MessageT &. The existing shared_ptr overloads are unchanged.

Fix

rclcpp/include/rclcpp/any_service_callback.hpp

  • New variant alternatives ConstRefCallback = void (const Request &, Response &) and ConstRefWithRequestHeaderCallback = void (const rmw_request_id_t &, const Request &, Response &), appended after the existing alternatives.
  • Both set() overloads get matching function_traits::same_arguments branches so std::bind results resolve like the shared_ptr shapes do.
  • dispatch() calls cb(*request, *response) / cb(*request_header, *request, *response) and returns the response as before.

The new alternatives cannot be ambiguous with the existing ones in the std::variant converting assignment: a callable taking const Request & is not invocable with a shared_ptr<Request> and vice versa, so at most one std::function alternative is viable for any callback.

How tested

rclcpp/test/rclcpp/test_any_service_callback.cpp: four new cases (const-ref without/with request header, response mutation propagated to the returned shared_ptr, std::bind for both shapes). rclcpp/test/rclcpp/test_service.cpp: create_service<> with a const-ref callback, exercised end to end through a client.

Before the change, the new callback shapes fail to compile:

any_service_callback.hpp:102:17: error: no match for 'operator=' (operand types are
'std::variant<std::monostate, std::function<void(std::shared_ptr<...Request>, std::shared_ptr<...Response>)>, ...>'
and '<lambda(const ...Request&, ...Response&)>')

After the change the header compiles and all cases pass. I could not run colcon test locally (no ROS 2 workspace), so the new gtest cases were mirrored in a standalone gtest harness that compiles the unmodified any_service_callback.hpp / function_traits.hpp against stub rmw/tracetools headers: 10/10 pass with -Wall -Wextra on GCC 13, including the pre-existing callback shapes. cpplint with the ament filters reports no issues. Please rely on CI for the full build and for ament_uncrustify.

Links

This change was prepared with an AI agent operated by KR-Ravindra, who reviewed and tested it.

@KR-Ravindra

Copy link
Copy Markdown
Author

Round 1 self-review.

Verified against rolling (e47c084):

  1. The two new alternatives are appended after the four existing ones in AnyServiceCallback's variant; the existing shared_ptr shapes and their set() branches are untouched.
  2. Ambiguity: a callable taking const Request & is not invocable with shared_ptr<Request> and vice versa, so the std::variant converting assignment sees at most one viable alternative; generic [](auto, auto) lambdas were already ambiguous before this change.
  3. dispatch() dereferences request_header only in the with-header branch; Executor::execute_service always passes a non-null rmw_request_id_t and Service::handle_request already dereferences it.
  4. GenericService keeps its own callback variant and is intentionally not changed here.
  5. Corrected one sentence in the description: upstream dispatch() moves the request and copies only the response shared_ptr.

No duplicate: #3078 cross-references only this PR, and the approach is the one jmachowinski suggested there. Open #3168 touches the same set() overloads, so one of the two will need a rebase. DCO passes; the abi workflow needs a maintainer to approve the run. Marking ready.

@KR-Ravindra
KR-Ravindra marked this pull request as ready for review September 13, 2026 06:56

@fujitatomoya fujitatomoya left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm with green CI. monor comment does not block this PR.

Comment thread rclcpp/include/rclcpp/any_service_callback.hpp
@fujitatomoya

Copy link
Copy Markdown
Collaborator

Pulls: #3269
Gist: https://gist.githubusercontent.com/fujitatomoya/49854ee45d8c5672d85cb581931e8c19/raw/43ceaeb52aaf47a9f24252885bbf373774819052/ros2.repos
BUILD args: --packages-above-and-dependencies rclcpp
TEST args: --packages-above rclcpp
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/20464

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

AnyServiceCallback now also accepts
  void (const Request &, Response &)
  void (const rmw_request_id_t &, const Request &, Response &)
in addition to the existing shared_ptr signatures. The request and
response are still received as shared_ptr internally and are
dereferenced before calling the user callback, mirroring what
AnySubscriptionCallback does for const MessageT & callbacks.
dispatch() throws std::runtime_error instead of dereferencing a null
request or request header for these two alternatives.

Both set() overloads gain matching function_traits::same_arguments
branches so std::bind results resolve to the right alternative, and
dispatch() handles the two new alternatives. Existing overloads are
unchanged.

Signed-off-by: KR Ravindra <42912207+KR-Ravindra@users.noreply.github.com>
@KR-Ravindra
KR-Ravindra force-pushed the feat/service-callback-const-ref branch from e2c22d4 to a90d9ca Compare September 16, 2026 00:33
@fujitatomoya

Copy link
Copy Markdown
Collaborator
  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@github-actions

Copy link
Copy Markdown

ABI Compliance Check

❌ Verdict: incompatible

Library Verdict Summary
libcomponent_manager.so ❌ incompatible ABI-incompatible changes detected.
librclcpp.so ❌ incompatible ABI changed: 0 removed, 8 changed, 106 added declaration(s); removed or changed declarations break backward compatibility.
librclcpp_action.so ✅ compatible No ABI changes detected.
librclcpp_lifecycle.so ❌ incompatible ABI-incompatible changes detected.
❌ libcomponent_manager.so — full abidiff report

Compared:

  • Base: lib-base/libcomponent_manager.so
  • Head: lib-pr/libcomponent_manager.so @ a90d9ca
Functions changes summary: 0 Removed (30 filtered out), 3 Changed (102 filtered out), 6 Added (84 filtered out) functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 15 Removed, 27 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 24 Added variable symbols not referenced by debug info

6 Added functions:

  [A] 'function char* tracetools::get_symbol<void, const composition_interfaces::srv::ListNodes_Request_<std::allocator<void> >&, composition_interfaces::srv::ListNodes_Response_<std::allocator<void> >&>(std::function<void(const composition_interfaces::srv::ListNodes_Request_<std::allocator<void> >&, composition_interfaces::srv::ListNodes_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN22composition_interfaces3srv18ListNodes_Request_ISaIvEEERNS2_19ListNodes_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const composition_interfaces::srv::LoadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::LoadNode_Response_<std::allocator<void> >&>(std::function<void(const composition_interfaces::srv::LoadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::LoadNode_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN22composition_interfaces3srv17LoadNode_Request_ISaIvEEERNS2_18LoadNode_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const composition_interfaces::srv::UnloadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::UnloadNode_Response_<std::allocator<void> >&>(std::function<void(const composition_interfaces::srv::UnloadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::UnloadNode_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEERNS2_20UnloadNode_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const composition_interfaces::srv::ListNodes_Request_<std::allocator<void> >&, composition_interfaces::srv::ListNodes_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const composition_interfaces::srv::ListNodes_Request_<std::allocator<void> >&, composition_interfaces::srv::ListNodes_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN22composition_interfaces3srv18ListNodes_Request_ISaIvEEERNS5_19ListNodes_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const composition_interfaces::srv::LoadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::LoadNode_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const composition_interfaces::srv::LoadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::LoadNode_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN22composition_interfaces3srv17LoadNode_Request_ISaIvEEERNS5_18LoadNode_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const composition_interfaces::srv::UnloadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::UnloadNode_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const composition_interfaces::srv::UnloadNode_Request_<std::allocator<void> >&, composition_interfaces::srv::UnloadNode_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEERNS5_20UnloadNode_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}

3 functions with some indirect sub-type change:

  [C] 'method void rclcpp::Service<composition_interfaces::srv::ListNodes>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<composition_interfaces::srv::ListNodes>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN22composition_interfaces3srv9ListNodesEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN22composition_interfaces3srv9ListNodesEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<composition_interfaces::srv::ListNodes>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<composition_interfaces::srv::ListNodes>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<composition_interfaces::srv::LoadNode>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<composition_interfaces::srv::LoadNode>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN22composition_interfaces3srv8LoadNodeEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN22composition_interfaces3srv8LoadNodeEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<composition_interfaces::srv::LoadNode>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<composition_interfaces::srv::LoadNode>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<composition_interfaces::srv::UnloadNode>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<composition_interfaces::srv::UnloadNode>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN22composition_interfaces3srv10UnloadNodeEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN22composition_interfaces3srv10UnloadNodeEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<composition_interfaces::srv::UnloadNode>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<composition_interfaces::srv::UnloadNode>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

15 Removed function symbols not referenced by debug info:

  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv17LoadNode_Request_ISaIvEEEES4_INS6_18LoadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8LoadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv17LoadNode_Request_ISaIvEEEES4_INS6_18LoadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8LoadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv17LoadNode_Request_ISaIvEEEES4_INS6_18LoadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8LoadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv17LoadNode_Request_ISaIvEEEES4_INS6_18LoadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8LoadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSL_St17integral_constantImLm3EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv17LoadNode_Request_ISaIvEEEES4_INS6_18LoadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8LoadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSS_St17integral_constantImLm4EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv18ListNodes_Request_ISaIvEEEES4_INS6_19ListNodes_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_9ListNodesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv18ListNodes_Request_ISaIvEEEES4_INS6_19ListNodes_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_9ListNodesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv18ListNodes_Request_ISaIvEEEES4_INS6_19ListNodes_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_9ListNodesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv18ListNodes_Request_ISaIvEEEES4_INS6_19ListNodes_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_9ListNodesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSL_St17integral_constantImLm3EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv18ListNodes_Request_ISaIvEEEES4_INS6_19ListNodes_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_9ListNodesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSS_St17integral_constantImLm4EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEEES4_INS6_20UnloadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_10UnloadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEEES4_INS6_20UnloadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_10UnloadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEEES4_INS6_20UnloadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_10UnloadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEEES4_INS6_20UnloadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_10UnloadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSL_St17integral_constantImLm3EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN22composition_interfaces3srv19UnloadNode_Request_ISaIvEEEES4_INS6_20UnloadNode_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_10UnloadNodeEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSS_St17integral_constantImLm4EEEEDaSW_SX_

27 Added function symbols not referenced by debug info:

  [A] _ZZN6rclcpp18AnyServiceCallbackIN22composition_interfaces3srv10UnloadNodeEE29register_callback_for_tracingEvENKUlOT_E_clIRSt8functionIFvRK16rmw_request_id_sRKNS2_19UnloadNode_Request_ISaIvEEERNS2_20UnloadNode_Response_ISE_EEEEEEDaS6_
  [A] _ZZN6rclcpp18AnyServiceCallbackIN22composition_interfaces3srv10UnloadNodeEE29register_callback_for_tracingEvENKUlOT_E_clIRSt8functionIFvRKNS2_19UnloadNode_Request_ISaIvEEERNS2_20UnloadNode_Response_ISB_EEEEEEDaS6_
  [A] _ZZN6rclcpp18AnyServiceCallbackIN22composition_interfaces3srv8LoadNodeEE29register_callback_for_tracingEvENKUlOT_E_clIRSt8functionIFvRK16rmw_request_id_sRKNS2_17LoadNode_Request_ISaIvEEERNS2_18LoadNode_Response_ISE_EEEEEEDaS6_
  [A] _ZZN6rclcpp18AnyServiceCallbackIN22composition_interfaces3srv8LoadNodeEE29register_callback_for_tracingEvENKUlOT_E_clIRSt8functionIFvRKNS2_17LoadNode_Request_ISaIvEEERNS2_18LoadNode_Response_ISB_EEEEEEDaS6_
  [A] _ZZN6rclcpp18AnyServiceCallbackIN22composition_interfaces3srv9ListNodesEE29register_callback_for_tracingEvENKUlOT_E_clIRSt8functionIFvRK16rmw_request_id_sRKNS2_18ListNo
... (report truncated; see the full report in the workflow run artifacts)
❌ librclcpp.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp.so
  • Head: lib-pr/librclcpp.so @ a90d9ca
Functions changes summary: 0 Removed (32 filtered out), 8 Changed (219 filtered out), 18 Added (142 filtered out) functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 0 Removed, 16 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 72 Added variable symbols not referenced by debug info

18 Added functions:

  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::DescribeParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::DescribeParameters_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::DescribeParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::DescribeParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv27DescribeParameters_Request_ISaIvEEERNS2_28DescribeParameters_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::GetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetLoggerLevels_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::GetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetLoggerLevels_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv24GetLoggerLevels_Request_ISaIvEEERNS2_25GetLoggerLevels_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::GetParameterTypes_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameterTypes_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::GetParameterTypes_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameterTypes_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv26GetParameterTypes_Request_ISaIvEEERNS2_27GetParameterTypes_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::GetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameters_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::GetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv22GetParameters_Request_ISaIvEEERNS2_23GetParameters_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::ListParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::ListParameters_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::ListParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::ListParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv23ListParameters_Request_ISaIvEEERNS2_24ListParameters_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::SetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetLoggerLevels_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::SetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetLoggerLevels_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv24SetLoggerLevels_Request_ISaIvEEERNS2_25SetLoggerLevels_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::SetParametersAtomically_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParametersAtomically_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::SetParametersAtomically_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParametersAtomically_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv32SetParametersAtomically_Request_ISaIvEEERNS2_33SetParametersAtomically_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rcl_interfaces::srv::SetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParameters_Response_<std::allocator<void> >&>(std::function<void(const rcl_interfaces::srv::SetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14rcl_interfaces3srv22SetParameters_Request_ISaIvEEERNS2_23SetParameters_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::DescribeParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::DescribeParameters_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::DescribeParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::DescribeParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv27DescribeParameters_Request_ISaIvEEERNS5_28DescribeParameters_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::GetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetLoggerLevels_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::GetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetLoggerLevels_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv24GetLoggerLevels_Request_ISaIvEEERNS5_25GetLoggerLevels_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::GetParameterTypes_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameterTypes_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::GetParameterTypes_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameterTypes_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv26GetParameterTypes_Request_ISaIvEEERNS5_27GetParameterTypes_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::GetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameters_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::GetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::GetParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv22GetParameters_Request_ISaIvEEERNS5_23GetParameters_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::ListParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::ListParameters_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::ListParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::ListParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv23ListParameters_Request_ISaIvEEERNS5_24ListParameters_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::SetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetLoggerLevels_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::SetLoggerLevels_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetLoggerLevels_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv24SetLoggerLevels_Request_ISaIvEEERNS5_25SetLoggerLevels_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::SetParametersAtomically_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParametersAtomically_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::SetParametersAtomically_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParametersAtomically_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv32SetParametersAtomically_Request_ISaIvEEERNS5_33SetParametersAtomically_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const rcl_interfaces::srv::SetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParameters_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const rcl_interfaces::srv::SetParameters_Request_<std::allocator<void> >&, rcl_interfaces::srv::SetParameters_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14rcl_interfaces3srv22SetParameters_Request_ISaIvEEERNS5_23SetParameters_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const type_description_interfaces__srv__GetTypeDescription_Request&, type_description_interfaces__srv__GetTypeDescription_Response&>(std::function<void(const rmw_request_id_s&, const type_description_interfaces__srv__GetTypeDescription_Request&, type_description_interfaces__srv__GetTypeDescription_Response&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRK60type_description_interfaces__srv__GetTypeDescription_RequestR61type_description_interfaces__srv__GetTypeDescription_ResponseEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const type_description_interfaces__srv__GetTypeDescription_Request&, type_description_interfaces__srv__GetTypeDescription_Response&>(std::function<void(const type_description_interfaces__srv__GetTypeDescription_Request&, type_description_interfaces__srv__GetTypeDescription_Response&)>)'    {_ZN10tracetools10get_symbolIvJRK60type_description_interfaces__srv__GetTypeDescription_RequestR61type_description_interfaces__srv__GetTypeDescription_ResponseEEEPcSt8functionIFT_DpT0_EE}

8 functions with some indirect sub-type change:

  [C] 'method void rclcpp::Service<rcl_interfaces::srv::DescribeParameters>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<rcl_interfaces::srv::DescribeParameters>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14rcl_interfaces3srv18DescribeParametersEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN14rcl_interfaces3srv18DescribeParametersEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<rcl_interfaces::srv::DescribeParameters>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<rcl_interfaces::srv::DescribeParameters>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<rcl_interfaces::srv::GetLoggerLevels>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<rcl_interfaces::srv::GetLoggerLevels>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14rcl_interfaces3srv15GetLoggerLevelsEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN14rcl_interfaces3srv15GetLoggerLevelsEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<rcl_interfaces::srv::GetLoggerLevels>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<rcl_interfaces::srv::GetLoggerLevels>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<rcl_interfaces::srv::GetParameterTypes>::Service(std::shared_ptr<rcl_node_s>, const std::string&, rclcpp::AnyServiceCallback<rcl_interfaces::srv::GetParameterTypes>, rcl_service_options_t&)' at service.hpp:260:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14rcl_interfaces3srv17GetParameterTypesEEC2ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
     and it aliases symbol: _ZN6rclcpp7ServiceIN14rcl_interfaces3srv17GetParameterTypesEEC1ESt10shared_ptrI10rcl_node_sERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_18AnyServiceCallbackIS3_EER21rcl_service_options_s
    implicit parameter 0 of type 'rclcpp::Service<rcl_interfaces::srv::GetParameterTypes>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<rcl_interfaces::srv::GetParameterTypes>' at service.h
... (report truncated; see the full report in the workflow run artifacts)
✅ librclcpp_action.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_action.so
  • Head: lib-pr/librclcpp_action.so @ a90d9ca
(empty report — no differences printed by abidiff)
❌ librclcpp_lifecycle.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_lifecycle.so
  • Head: lib-pr/librclcpp_lifecycle.so @ a90d9ca
Functions changes summary: 0 Removed (44 filtered out), 4 Changed (224 filtered out), 8 Added (116 filtered out) functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 20 Removed, 36 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 32 Added variable symbols not referenced by debug info

8 Added functions:

  [A] 'function char* tracetools::get_symbol<void, const lifecycle_msgs::srv::ChangeState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::ChangeState_Response_<std::allocator<void> >&>(std::function<void(const lifecycle_msgs::srv::ChangeState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::ChangeState_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEERNS2_21ChangeState_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const lifecycle_msgs::srv::GetAvailableStates_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableStates_Response_<std::allocator<void> >&>(std::function<void(const lifecycle_msgs::srv::GetAvailableStates_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableStates_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEERNS2_28GetAvailableStates_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const lifecycle_msgs::srv::GetAvailableTransitions_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableTransitions_Response_<std::allocator<void> >&>(std::function<void(const lifecycle_msgs::srv::GetAvailableTransitions_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableTransitions_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14lifecycle_msgs3srv32GetAvailableTransitions_Request_ISaIvEEERNS2_33GetAvailableTransitions_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const lifecycle_msgs::srv::GetState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetState_Response_<std::allocator<void> >&>(std::function<void(const lifecycle_msgs::srv::GetState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetState_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRKN14lifecycle_msgs3srv17GetState_Request_ISaIvEEERNS2_18GetState_Response_IS4_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const lifecycle_msgs::srv::ChangeState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::ChangeState_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const lifecycle_msgs::srv::ChangeState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::ChangeState_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEERNS5_21ChangeState_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const lifecycle_msgs::srv::GetAvailableStates_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableStates_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const lifecycle_msgs::srv::GetAvailableStates_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableStates_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEERNS5_28GetAvailableStates_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const lifecycle_msgs::srv::GetAvailableTransitions_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableTransitions_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const lifecycle_msgs::srv::GetAvailableTransitions_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetAvailableTransitions_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14lifecycle_msgs3srv32GetAvailableTransitions_Request_ISaIvEEERNS5_33GetAvailableTransitions_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}
  [A] 'function char* tracetools::get_symbol<void, const rmw_request_id_s&, const lifecycle_msgs::srv::GetState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetState_Response_<std::allocator<void> >&>(std::function<void(const rmw_request_id_s&, const lifecycle_msgs::srv::GetState_Request_<std::allocator<void> >&, lifecycle_msgs::srv::GetState_Response_<std::allocator<void> >&)>)'    {_ZN10tracetools10get_symbolIvJRK16rmw_request_id_sRKN14lifecycle_msgs3srv17GetState_Request_ISaIvEEERNS5_18GetState_Response_IS7_EEEEEPcSt8functionIFT_DpT0_EE}

4 functions with some indirect sub-type change:

  [C] 'method void rclcpp::Service<lifecycle_msgs::srv::ChangeState>::Service(const std::shared_ptr<rcl_node_s>&, rcl_service_t*, rclcpp::AnyServiceCallback<lifecycle_msgs::srv::ChangeState>)' at service.hpp:357:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv11ChangeStateEEC2ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
     and it aliases symbol: _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv11ChangeStateEEC1ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
    implicit parameter 0 of type 'rclcpp::Service<lifecycle_msgs::srv::ChangeState>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<lifecycle_msgs::srv::ChangeState>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<lifecycle_msgs::srv::GetAvailableStates>::Service(const std::shared_ptr<rcl_node_s>&, rcl_service_t*, rclcpp::AnyServiceCallback<lifecycle_msgs::srv::GetAvailableStates>)' at service.hpp:357:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv18GetAvailableStatesEEC2ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
     and it aliases symbol: _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv18GetAvailableStatesEEC1ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
    implicit parameter 0 of type 'rclcpp::Service<lifecycle_msgs::srv::GetAvailableStates>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<lifecycle_msgs::srv::GetAvailableStates>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<lifecycle_msgs::srv::GetAvailableTransitions>::Service(const std::shared_ptr<rcl_node_s>&, rcl_service_t*, rclcpp::AnyServiceCallback<lifecycle_msgs::srv::GetAvailableTransitions>)' at service.hpp:357:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv23GetAvailableTransitionsEEC2ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
     and it aliases symbol: _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv23GetAvailableTransitionsEEC1ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
    implicit parameter 0 of type 'rclcpp::Service<lifecycle_msgs::srv::GetAvailableTransitions>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<lifecycle_msgs::srv::GetAvailableTransitions>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

  [C] 'method void rclcpp::Service<lifecycle_msgs::srv::GetState>::Service(const std::shared_ptr<rcl_node_s>&, rcl_service_t*, rclcpp::AnyServiceCallback<lifecycle_msgs::srv::GetState>)' at service.hpp:357:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv8GetStateEEC2ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
     and it aliases symbol: _ZN6rclcpp7ServiceIN14lifecycle_msgs3srv8GetStateEEC1ERKSt10shared_ptrI10rcl_node_sEP13rcl_service_sNS_18AnyServiceCallbackIS3_EE
    implicit parameter 0 of type 'rclcpp::Service<lifecycle_msgs::srv::GetState>*' has sub-type changes:
      in pointed to type 'class rclcpp::Service<lifecycle_msgs::srv::GetState>' at service.hpp:231:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (6 filtered);
        no data member change (1 filtered);

20 Removed function symbols not referenced by debug info:

  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv17GetState_Request_ISaIvEEEES4_INS6_18GetState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8GetStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv17GetState_Request_ISaIvEEEES4_INS6_18GetState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8GetStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv17GetState_Request_ISaIvEEEES4_INS6_18GetState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8GetStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv17GetState_Request_ISaIvEEEES4_INS6_18GetState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8GetStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSL_St17integral_constantImLm3EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv17GetState_Request_ISaIvEEEES4_INS6_18GetState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_8GetStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSS_St17integral_constantImLm4EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEEES4_INS6_21ChangeState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_11ChangeStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEEES4_INS6_21ChangeState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_11ChangeStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEEES4_INS6_21ChangeState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_11ChangeStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEEES4_INS6_21ChangeState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_11ChangeStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSL_St17integral_constantImLm3EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv20ChangeState_Request_ISaIvEEEES4_INS6_21ChangeState_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_11ChangeStateEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSS_St17integral_constantImLm4EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEEES4_INS6_28GetAvailableStates_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_18GetAvailableStatesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRS2_St17integral_constantImLm0EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEEES4_INS6_28GetAvailableStates_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_18GetAvailableStatesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSF_St17integral_constantImLm1EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEEES4_INS6_28GetAvailableStates_Response_IS8_EEEEES3_IFvS4_I16rmw_request_id_sESA_SD_EES3_IFvSH_SA_EES3_IFvS4_IN6rclcpp7ServiceINS6_18GetAvailableStatesEEEESH_SA_EEEEaSEOST_ENUlOT_T0_E_clIRSJ_St17integral_constantImLm2EEEEDaSW_SX_
  [D] _ZZNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateSt8functionIFvSt10shared_ptrIN14lifecycle_msgs3srv27GetAvailableStates_Request_ISaIvEEEES4_INS6_28GetAvailableStates_Response_IS8_EEEEES3_IFvS4_I16rmw
... (report truncated; see the full report in the workflow run artifacts)

Updated for commit a90d9ca · suppressions: /home/runner/work/_temp/ros2-abi-suppressions.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants