Skip to content

Malformed SetParameters request with invalid type crashes rclcpp node #3257

Description

@impala454

Generated by Generative AI

Not generated by AI but aided byGPT-5.6 Sol

Operating System:

6.17.0-22-generic #22~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC

ROS version or commit hash:

humble, jazzy, rolling

RMW implementation (if applicable):

No response

RMW Configuration (if applicable):

No response

Client library (if applicable):

rclcpp

'ros2 doctor --report' output

ros2 doctor --report
# ros2 doctor --report

   NETWORK CONFIGURATION
inet         : 127.0.0.1
inet4        : ['127.0.0.1']
inet6        : ['::1']
netmask      : 255.0.0.0
device       : lo
flags        : 73<LOOPBACK,RUNNING,UP>
mtu          : 65536
inet         : 10.10.15.68
inet4        : ['10.10.15.68']
ether        : 1c:69:7a:d0:c3:8c
netmask      : 255.255.255.0
device       : enp91s0
flags        : 4163<MULTICAST,RUNNING,BROADCAST,UP>
mtu          : 1500
broadcast    : 10.10.15.255
inet         : 10.10.20.58
inet4        : ['10.10.20.58']
ether        : 28:df:eb:5b:18:5f
inet6        : ['fe80::e448:cbc4:ff80:47c5%wlp90s0']
netmask      : 255.255.255.0
device       : wlp90s0
flags        : 4163<MULTICAST,RUNNING,BROADCAST,UP>
mtu          : 1500
broadcast    : 10.10.20.255
inet         : 172.17.0.1
inet4        : ['172.17.0.1']
ether        : d6:75:e3:20:ad:68
inet6        : ['fe80::d475:e3ff:fe20:ad68%docker0']
netmask      : 255.255.0.0
device       : docker0
flags        : 4099<MULTICAST,BROADCAST,UP>
mtu          : 1500
broadcast    : 172.17.255.255
ether        : 3c:8c:f8:ed:22:15
device       : enp2s0
flags        : 4099<MULTICAST,BROADCAST,UP>
mtu          : 1500

   PACKAGE VERSIONS
bad_parameter_repro                       : latest=, local=0.0.1
ament_cmake_export_interfaces             : latest=1.3.14, local=1.3.14
ament_cmake_flake8                        : latest=0.12.15, local=0.12.15
ament_uncrustify                          : latest=0.12.15, local=0.12.15
uncrustify_vendor                         : latest=2.0.2, local=2.0.2
rclcpp_components                         : latest=16.0.20, local=16.0.19
rcpputils                                 : latest=2.4.7, local=2.4.7
rcl                                       : latest=5.3.13, local=5.3.13
ros2launch                                : latest=0.19.14, local=0.19.14
ament_cmake_auto                          : latest=1.3.14, local=1.3.14
launch_xml                                : latest=1.0.14, local=1.0.14
launch_testing_ros                        : latest=0.19.14, local=0.19.14
ament_cmake_libraries                     : latest=1.3.14, local=1.3.14
rosidl_cli                                : latest=3.1.9, local=3.1.9
std_msgs                                  : latest=4.9.2, local=4.9.2
ros2param                                 : latest=0.18.20, local=0.18.19
ament_cmake_export_definitions            : latest=1.3.14, local=1.3.14
ament_lint_cmake                          : latest=0.12.15, local=0.12.15
fastrtps_cmake_module                     : latest=2.2.4, local=2.2.4
spdlog_vendor                             : latest=1.3.1, local=1.3.1
rosidl_default_generators                 : latest=1.2.1, local=1.2.1
rmw_implementation                        : latest=2.8.5, local=2.8.5
libstatistics_collector                   : latest=1.3.4, local=1.3.4
rosidl_runtime_cpp                        : latest=3.1.9, local=3.1.9
class_loader                              : latest=2.2.0, local=2.2.0
ament_pep257                              : latest=0.12.15, local=0.12.15
ament_cmake_gen_version_h                 : latest=1.3.14, local=1.3.14
rcl_yaml_param_parser                     : latest=5.3.13, local=5.3.13
ament_lint                                : latest=0.12.15, local=0.12.15
ament_cmake_version                       : latest=1.3.14, local=1.3.14
ament_cmake_test                          : latest=1.3.14, local=1.3.14
ros2topic                                 : latest=0.18.20, local=0.18.19
ament_index_cpp                           : latest=1.4.1, local=1.4.1
pluginlib                                 : latest=5.1.5, local=5.1.4
rosidl_typesupport_fastrtps_c             : latest=2.2.4, local=2.2.4
std_srvs                                  : latest=4.9.2, local=4.9.2
rosidl_typesupport_introspection_c        : latest=3.1.9, local=3.1.9
ament_cmake_export_targets                : latest=1.3.14, local=1.3.14
geometry_msgs                             : latest=4.9.2, local=4.9.2
trajectory_msgs                           : latest=4.9.2, local=4.9.2
ament_cmake_copyright                     : latest=0.12.15, local=0.12.15
rosidl_cmake                              : latest=3.1.9, local=3.1.9
launch_ros                                : latest=0.19.14, local=0.19.14
ament_copyright                           : latest=0.12.15, local=0.12.15
ament_cmake_export_link_flags             : latest=1.3.14, local=1.3.14
ros2plugin                                : latest=5.1.5, local=5.1.4
tinyxml2_vendor                           : latest=0.7.7, local=0.7.7
statistics_msgs                           : latest=1.2.3, local=1.2.3
ament_index_python                        : latest=1.4.1, local=1.4.1
rosidl_adapter                            : latest=3.1.9, local=3.1.9
ament_xmllint                             : latest=0.12.15, local=0.12.15
ament_cmake_python                        : latest=1.3.14, local=1.3.14
rclpy                                     : latest=3.3.22, local=3.3.21
rmw_implementation_cmake                  : latest=6.1.3, local=6.1.3
builtin_interfaces                        : latest=1.2.3, local=1.2.3
ros2multicast                             : latest=0.18.20, local=0.18.19
ament_cmake_export_include_directories    : latest=1.3.14, local=1.3.14
action_msgs                               : latest=1.2.3, local=1.2.3
tracetools                                : latest=4.1.2, local=4.1.2
ros2lifecycle                             : latest=0.18.20, local=0.18.19
rcl_lifecycle                             : latest=5.3.13, local=5.3.13
ament_cmake_core                          : latest=1.3.14, local=1.3.14
actionlib_msgs                            : latest=4.9.2, local=4.9.2
ament_cpplint                             : latest=0.12.15, local=0.12.15
ament_cmake_include_directories           : latest=1.3.14, local=1.3.14
ros_workspace                             : latest=1.0.2, local=1.0.2
rpyutils                                  : latest=0.2.2, local=0.2.2
libyaml_vendor                            : latest=1.2.2, local=1.2.2
stereo_msgs                               : latest=4.9.2, local=4.9.2
rosidl_typesupport_introspection_cpp      : latest=3.1.9, local=3.1.9
ros2action                                : latest=0.18.20, local=0.18.19
ament_cmake_gtest                         : latest=1.3.14, local=1.3.14
rosidl_generator_cpp                      : latest=3.1.9, local=3.1.9
lifecycle_msgs                            : latest=1.2.3, local=1.2.3
ros2interface                             : latest=0.18.20, local=0.18.19
rmw                                       : latest=6.1.3, local=6.1.3
python_cmake_module                       : latest=0.10.0, local=0.10.0
rclcpp_action                             : latest=16.0.20, local=16.0.19
visualization_msgs                        : latest=4.9.2, local=4.9.2
composition_interfaces                    : latest=1.2.3, local=1.2.3
ros2run                                   : latest=0.18.20, local=0.18.19
domain_coordinator                        : latest=0.10.0, local=0.10.0
rclcpp                                    : latest=16.0.20, local=16.0.19
ament_cmake_cppcheck                      : latest=0.12.15, local=0.12.15
ros2pkg                                   : latest=0.18.20, local=0.18.19
rcl_logging_interface                     : latest=2.3.2, local=2.3.2
launch_testing                            : latest=1.0.14, local=1.0.14
ament_cmake_ros                           : latest=0.10.0, local=0.10.0
ament_cmake_gmock                         : latest=1.3.14, local=1.3.14
ament_cmake_cpplint                       : latest=0.12.15, local=0.12.15
rosidl_typesupport_fastrtps_cpp           : latest=2.2.4, local=2.2.4
sros2                                     : latest=0.10.9, local=0.10.9
ament_cmake_pytest                        : latest=1.3.14, local=1.3.14
rcl_interfaces                            : latest=1.2.3, local=1.2.3
ament_cmake                               : latest=1.3.14, local=1.3.14
rosidl_typesupport_cpp                    : latest=2.0.2, local=2.0.2
unique_identifier_msgs                    : latest=2.2.1, local=2.2.1
shape_msgs                                : latest=4.9.2, local=4.9.2
ament_cmake_xmllint                       : latest=0.12.15, local=0.12.15
rosidl_runtime_c                          : latest=3.1.9, local=3.1.9
rcutils                                   : latest=5.1.9, local=5.1.9
ament_cmake_export_dependencies           : latest=1.3.14, local=1.3.14
rosidl_typesupport_interface              : latest=3.1.9, local=3.1.9
launch_testing_ament_cmake                : latest=1.0.14, local=1.0.14
rosidl_generator_rs                       : latest=0.5.0, local=0.4.12
rmw_fastrtps_shared_cpp                   : latest=6.2.10, local=6.2.10
launch_yaml                               : latest=1.0.14, local=1.0.14
rclcpp_lifecycle                          : latest=16.0.20, local=16.0.19
rosidl_generator_c                        : latest=3.1.9, local=3.1.9
rcl_logging_spdlog                        : latest=2.3.2, local=2.3.2
ament_lint_common                         : latest=0.12.15, local=0.12.15
console_bridge_vendor                     : latest=1.4.1, local=1.4.1
ament_lint_auto                           : latest=0.12.15, local=0.12.15
ament_cmake_uncrustify                    : latest=0.12.15, local=0.12.15
ros2cli                                   : latest=0.18.20, local=0.18.19
ament_cmake_pep257                        : latest=0.12.15, local=0.12.15
diagnostic_msgs                           : latest=4.9.2, local=4.9.2
ros2component                             : latest=0.18.20, local=0.18.19
rosidl_default_runtime                    : latest=1.2.1, local=1.2.1
rmw_dds_common                            : latest=1.6.0, local=1.6.0
ros2cli_common_extensions                 : latest=0.1.2, local=0.1.2
ros2doctor                                : latest=0.18.20, local=0.18.19
launch                                    : latest=1.0.14, local=1.0.14
ament_package                             : latest=0.14.2, local=0.14.2
ros_environment                           : latest=3.2.2, local=3.2.2
ros_core                                  : latest=0.10.0, local=0.10.0
osrf_pycommon                             : latest=2.1.6, local=2.1.6
ament_cmake_lint_cmake                    : latest=0.12.15, local=0.12.15
rmw_fastrtps_cpp                          : latest=6.2.10, local=6.2.10
ament_cmake_target_dependencies           : latest=1.3.14, local=1.3.14
rosidl_generator_py                       : latest=0.14.6, local=0.14.6
sensor_msgs                               : latest=4.9.2, local=4.9.2
ros2node                                  : latest=0.18.20, local=0.18.19
rosgraph_msgs                             : latest=1.2.3, local=1.2.3
ament_flake8                              : latest=0.12.15, local=0.12.15
ament_cppcheck                            : latest=0.12.15, local=0.12.15
sros2_cmake                               : latest=0.10.9, local=0.10.9
ros2service                               : latest=0.18.20, local=0.18.19
rosidl_parser                             : latest=3.1.9, local=3.1.9
common_interfaces                         : latest=4.9.2, local=4.9.2
rosidl_runtime_py                         : latest=0.9.3, local=0.9.3
rosidl_typesupport_c                      : latest=2.0.2, local=2.0.2
rcl_action                                : latest=5.3.13, local=5.3.13
nav_msgs                                  : latest=4.9.2, local=4.9.2
ament_cmake_export_libraries              : latest=1.3.14, local=1.3.14
tf2_tools                                 : latest=0.25.22, local=0.25.22
orocos_kdl_vendor                         : latest=0.2.5, local=0.2.5
tf2_ros                                   : latest=0.25.22, local=0.25.22
rosbag2_storage_default_plugins           : latest=0.15.16, local=0.15.16
rosbag2_py                                : latest=0.15.16, local=0.15.16
kdl_parser                                : latest=2.6.4, local=2.6.4
message_filters                           : latest=4.3.19, local=4.3.19
tf2_sensor_msgs                           : latest=0.25.22, local=0.25.22
tf2_py                                    : latest=0.25.22, local=0.25.22
yaml_cpp_vendor                           : latest=8.0.2, local=8.0.2
rosbag2_storage                           : latest=0.15.16, local=0.15.16
urdf_parser_plugin                        : latest=2.6.1, local=2.6.1
tf2_eigen_kdl                             : latest=0.25.22, local=0.25.22
urdf                                      : latest=2.6.1, local=2.6.1
rosbag2_transport                         : latest=0.15.16, local=0.15.16
tf2_ros_py                                : latest=0.25.22, local=0.25.22
shared_queues_vendor                      : latest=0.15.16, local=0.15.16
pybind11_vendor                           : latest=2.4.2, local=2.4.2
ros_base                                  : latest=0.10.0, local=0.10.0
tf2_eigen                                 : latest=0.25.22, local=0.25.22
rosbag2_compression_zstd                  : latest=0.15.16, local=0.15.16
sqlite3_vendor                            : latest=0.15.16, local=0.15.16
python_orocos_kdl_vendor                  : latest=0.2.5, local=0.2.5
tinyxml_vendor                            : latest=0.8.3, local=0.8.3
tf2_bullet                                : latest=0.25.22, local=0.25.22
tf2_kdl                                   : latest=0.25.22, local=0.25.22
keyboard_handler                          : latest=0.0.5, local=0.0.5
tf2                                       : latest=0.25.22, local=0.25.22
rosbag2                                   : latest=0.15.16, local=0.15.16
zstd_vendor                               : latest=0.15.16, local=0.15.16
eigen3_cmake_module                       : latest=0.1.1, local=0.1.1
geometry2                                 : latest=0.25.22, local=0.25.22
tf2_msgs                                  : latest=0.25.22, local=0.25.22
sensor_msgs_py                            : latest=4.9.2, local=4.9.2
tf2_geometry_msgs                         : latest=0.25.22, local=0.25.22
robot_state_publisher                     : latest=3.0.3, local=3.0.3
rosbag2_interfaces                        : latest=0.15.16, local=0.15.16
rosbag2_cpp                               : latest=0.15.16, local=0.15.16
rosbag2_compression                       : latest=0.15.16, local=0.15.16
ros2bag                                   : latest=0.15.16, local=0.15.16

   PLATFORM INFORMATION
system           : Linux
platform info    : Linux-6.17.0-22-generic-x86_64-with-glibc2.35
release          : 6.17.0-22-generic
processor        : x86_64

   QOS COMPATIBILITY LIST
compatibility status    : No publisher/subscriber pairs found

   RMW MIDDLEWARE
middleware name    : rmw_fastrtps_cpp

   ROS 2 INFORMATION
distribution name      : humble
distribution type      : ros2
distribution status    : active
release platforms      : {'rhel': ['8'], 'ubuntu': ['jammy']}

   TOPIC LIST
topic               : none
publisher count     : 0
subscriber count    : 0

Steps to reproduce issue

Please see toy example here: https://gitlab.com/cclaunch/bad_parameter_repro.git . I get the same results in humble, jazzy, and rolling.

  1. Form a SetParameters request
  2. Fill in an invalid parameter type ID (something greater than 9 currently), e.g. 10
  3. Send the request
  4. The receiving end node will crash with a std::runtime_error Unknown type: 10

Expected behavior

The node with the parameter being set should not crash.

Actual behavior

The node with the parameter being set crashes with std::runtime_error Unknown type: <invalid_type_id>

Additional information

We noticed this issue because we have some UI code in javascript that interfaces to several services we proxy to our robot. It was a miss on our part to add to the enumeration of types incorrectly (which brought us to 10, which was invalid), but still I would not expect an invalid parameter type in a request from a remote client to crash the entire parameter server side process. In this particular case the node in question was also part of a larger component container and the entire container crashes. I think the recommendation that makes sense here is for the set parameters call to fail at the client end.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions