Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Jazzy] action server registers clock jump callbacks without the clock mutex (heap corruption)

Đang mở
#3,317 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@Miko997 đang làm issue này rồi.

Từ ngày 8/10/2026.

  • #3318 của @Miko997 — đang mở

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
44/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
cpp
Lĩnh vực
backend

Hướng nghiên cứu

Start by locating the action-server code that registers clock-jump callbacks and tracing how it accesses the clock mutex; the issue does not name specific files or tests. Reproduce the reported heap corruption on Jazzy and inspect the related locking and callback-registration behavior. Done means the registration is safe with respect to the clock mutex and the failure is covered by a regression test.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
Generated by Generative AI

Claude Opus 5.5

Operating System:

Ubuntu 24.04

ROS version or commit hash:

ros-jazzy-rclcpp / ros-jazzy-rclcpp-action 28.1.21, ros-jazzy-rcl-action 9.2.11

RMW implementation (if applicable):

rmw_cyclonedds_cpp 2.2.4

RMW Configuration (if applicable):

No response

Client library (if applicable):

rclcpp

'ros2 doctor --report' output
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<UP,RUNNING,LOOPBACK>
mtu          : 65536
inet         : 10.125.1.127
inet4        : ['10.125.1.127']
ether        : 4c:a9:54:c9:b9:77
inet6        : ['fe80::5997:9e07:93c8:836%wlp0s20f3']
netmask      : 255.255.255.0
device       : wlp0s20f3
flags        : 4163<RUNNING,UP,BROADCAST,MULTICAST>
mtu          : 1500
broadcast    : 10.125.1.255
inet         : 192.168.122.1
inet4        : ['192.168.122.1']
ether        : 52:54:00:56:7c:7e
netmask      : 255.255.255.0
device       : virbr0
flags        : 4099<UP,BROADCAST,MULTICAST>
mtu          : 1500
broadcast    : 192.168.122.255
inet         : 100.98.150.106
inet4        : ['100.98.150.106']
inet6        : ['fd7a:115c:a1e0::73a:966a', 'fe80::c29:9cc1:58af:3bb0%tailscale0']
netmask      : 255.255.255.255
device       : tailscale0
flags        : 4305<PTP,NOARP,UP,MULTICAST,RUNNING>
mtu          : 1280
inet         : 172.17.0.1
inet4        : ['172.17.0.1']
ether        : 8a:31:19:0e:58:82
inet6        : ['fe80::8831:19ff:fe0e:5882%docker0']
netmask      : 255.255.0.0
device       : docker0
flags        : 4099<UP,BROADCAST,MULTICAST>
mtu          : 1500
broadcast    : 172.17.255.255

   PACKAGE VERSIONS
ament_index_python                        : latest=1.8.4, local=1.8.4
mola_bridge_ros2                          : latest=2.9.0, local=2.9.0
ros2run                                   : latest=0.32.10, local=0.32.10
pcl_ros                                   : latest=2.6.4, local=2.6.4
parallel_gripper_controller               : latest=4.40.1, local=4.40.1
control_toolbox                           : latest=4.11.0, local=4.11.0
angles                                    : latest=1.16.1, local=1.16.1
rosbag2                                   : latest=0.26.11, local=0.26.11
xacro                                     : latest=2.1.1, local=2.1.1
simulation_interfaces                     : latest=1.5.1, local=1.5.1
dwb_core                                  : latest=1.3.12, local=1.3.12
interactive_markers                       : latest=2.5.5, local=2.5.5
nav2_core                                 : latest=1.3.12, local=1.3.12
ros_gz_sim                                : latest=1.0.22, local=1.0.22
nav2_msgs                                 : latest=1.3.12, local=1.3.12
tf2_py                                    : latest=0.36.21, local=0.36.21
tracetools                                : latest=8.2.6, local=8.2.6
domain_coordinator                        : latest=0.12.1, local=0.12.1
joint_trajectory_controller               : latest=4.40.1, local=4.40.1
ament_uncrustify                          : latest=0.17.5, local=0.17.5
rcpputils                                 : latest=2.11.4, local=2.11.4
rosidl_dynamic_typesupport                : latest=0.1.2, local=0.1.2
ros_environment                           : latest=4.2.1, local=4.2.1
rosbag2_compression_zstd                  : latest=0.26.11, local=0.26.11
ament_cmake_target_dependencies           : latest=2.5.6, local=2.5.6
mola_msgs                                 : latest=2.9.0, local=2.9.0
uncrustify_vendor                         : latest=3.0.1, local=3.0.1
mecanum_drive_controller                  : latest=4.40.1, local=4.40.1
srdfdom                                   : latest=2.0.7, local=2.0.7
nav2_constrained_smoother                 : latest=1.3.12, local=1.3.12
ros_gz_bridge                             : latest=1.0.22, local=1.0.22
visualization_msgs                        : latest=5.3.8, local=5.3.8
ament_cmake_google_benchmark              : latest=2.5.6, local=2.5.6
admittance_controller                     : latest=4.40.1, local=4.40.1
gripper_controllers                       : latest=4.40.1, local=4.40.1
class_loader                              : latest=2.7.1, local=2.7.1
diff_drive_controller                     : latest=4.40.1, local=4.40.1
rosidl_core_generators                    : latest=0.2.1, local=0.2.1
qt_gui_cpp                                : latest=2.7.6, local=2.7.6
sdformat_urdf                             : latest=1.0.2, local=1.0.2
rcl_action                                : latest=9.2.11, local=9.2.11
yaml_cpp_vendor                           : latest=9.0.1, local=9.0.1
diagnostic_aggregator                     : latest=4.2.7, local=4.2.7
twist_mux                                 : latest=4.5.0, local=4.5.0
ros2_medkit_msgs                          : latest=0.4.0, local=0.4.0
bond                                      : latest=4.2.0, local=4.2.0
libcurl_vendor                            : latest=3.4.4, local=3.4.4
ament_cmake_gmock                         : latest=2.5.6, local=2.5.6
geometric_shapes                          : latest=2.3.4, local=2.3.4
laser_geometry                            : latest=2.7.2, local=2.7.2
bondcpp                                   : latest=4.2.0, local=4.2.0
spdlog_vendor                             : latest=1.6.2, local=1.6.2
geographic_msgs                           : latest=1.0.6, local=1.0.6
tf2_geometry_msgs                         : latest=0.36.21, local=0.36.21
ament_xmllint                             : latest=0.17.5, local=0.17.5
ament_cpplint                             : latest=0.17.5, local=0.17.5
rosidl_typesupport_introspection_c        : latest=4.6.9, local=4.6.9
ros2interface                             : latest=0.32.10, local=0.32.10
rosbag2_storage                           : latest=0.26.11, local=0.26.11
pid_controller                            : latest=4.40.1, local=4.40.1
ros2cli_common_extensions                 : latest=0.3.1, local=0.3.1
state_interfaces_broadcaster              : latest=4.40.1, local=4.40.1
rviz_rendering                            : latest=14.1.22, local=14.1.22
pybind11_vendor                           : latest=3.1.3, local=3.1.3
rosidl_core_runtime                       : latest=0.2.1, local=0.2.1
gz_common_vendor                          : latest=0.0.9, local=0.0.9
actionlib_msgs                            : latest=5.3.8, local=5.3.8
topic_tools_interfaces                    : latest=1.3.4, local=1.3.4
nav2_navfn_planner                        : latest=1.3.12, local=1.3.12
imu_sensor_broadcaster                    : latest=4.40.1, local=4.40.1
rclcpp_lifecycle                          : latest=28.1.21, local=28.1.21
nav2_rviz_plugins                         : latest=1.3.12, local=1.3.12
nav2_amcl                                 : latest=1.3.12, local=1.3.12
gz_sensors_vendor                         : latest=0.0.6, local=0.0.6
ament_cmake_export_interfaces             : latest=2.5.6, local=2.5.6
image_transport                           : latest=5.1.8, local=5.1.8
ament_lint_common                         : latest=0.17.5, local=0.17.5
theora_image_transport                    : latest=4.0.7, local=4.0.7
common_interfaces                         : latest=5.3.8, local=5.3.8
urdf_parser_plugin                        : latest=2.10.1, local=2.10.1
rosidl_typesupport_interface              : latest=4.6.9, local=4.6.9
rcl_lifecycle                             : latest=9.2.11, local=9.2.11
gz_transport_vendor                       : latest=0.0.7, local=0.0.7
tinyxml2_vendor                           : latest=0.9.2, local=0.9.2
nav2_util                                 : latest=1.3.12, local=1.3.12
bicycle_steering_controller               : latest=4.40.1, local=4.40.1
action_msgs                               : latest=2.0.4, local=2.0.4
rosidl_runtime_py                         : latest=0.13.2, local=0.13.2
actuator_msgs                             : latest=0.0.1, local=0.0.1
eigen_stl_containers                      : latest=1.1.0, local=1.1.0
rosidl_cli                                : latest=4.6.9, local=4.6.9
joint_state_publisher_gui                 : latest=2.4.1, local=2.4.1
position_controllers                      : latest=4.40.1, local=4.40.1
ament_lint_auto                           : latest=0.17.5, local=0.17.5
ros2doctor                                : latest=0.32.10, local=0.32.10
perception_pcl                            : latest=2.6.4, local=2.6.4
ros2_control_cmake                        : latest=0.4.0, local=0.4.0
rqt_gui                                   : latest=1.6.4, local=1.6.4
gz_dartsim_vendor                         : latest=0.0.3, local=0.0.3
gps_msgs                                  : latest=2.1.2, local=2.1.2
navigation2                               : latest=1.3.12, local=1.3.12
osrf_pycommon                             : latest=2.1.7, local=2.1.7
rosidl_adapter                            : latest=4.6.9, local=4.6.9
ament_clang_format                        : latest=0.17.5, local=0.17.5
zstd_vendor                               : latest=0.26.11, local=0.26.11
rosidl_runtime_c                          : latest=4.6.9, local=4.6.9
ament_cmake_version                       : latest=2.5.6, local=2.5.6
mola_lidar_odometry                       : latest=2.2.0, local=2.2.0
nav2_costmap_2d                           : latest=1.3.12, local=1.3.12
gz_tools_vendor                           : latest=0.0.7, local=0.0.7
moveit_ros_warehouse                      : latest=2.12.4, local=2.12.4
keyboard_handler                          : latest=0.3.2, local=0.3.2
random_numbers                            : latest=2.0.5, local=2.0.5
type_description_interfaces               : latest=2.0.4, local=2.0.4
rosidl_pycommon                           : latest=4.6.9, local=4.6.9
ros2node                                  : latest=0.32.10, local=0.32.10
nav2_regulated_pure_pursuit_controller    : latest=1.3.12, local=1.3.12
qt_gui_py_common                          : latest=2.7.6, local=2.7.6
nav2_behavior_tree                        : latest=1.3.12, local=1.3.12
resource_retriever                        : latest=3.4.4, local=3.4.4
behaviortree_cpp                          : latest=4.9.0, local=4.9.0
rosidl_typesupport_fastrtps_cpp           : latest=3.6.4, local=3.6.4
rosbag2_interfaces                        : latest=0.26.11, local=0.26.11
moveit_ros_planning                       : latest=2.12.4, local=2.12.4
ros2multicast                             : latest=0.32.10, local=0.32.10
warehouse_ros                             : latest=2.0.5, local=2.0.5
ros2_controllers                          : latest=4.40.1, local=4.40.1
test_msgs                                 : latest=2.0.4, local=2.0.4
force_torque_sensor_broadcaster           : latest=4.40.1, local=4.40.1
ament_cmake_pep257                        : latest=0.17.5, local=0.17.5
nav2_collision_monitor                    : latest=1.3.12, local=1.3.12
opennav_docking_core                      : latest=1.3.12, local=1.3.12
ament_cmake_python                        : latest=2.5.6, local=2.5.6
nav2_planner                              : latest=1.3.12, local=1.3.12
nav2_rotation_shim_controller             : latest=1.3.12, local=1.3.12
nav2_graceful_controller                  : latest=1.3.12, local=1.3.12
controller_interface                      : latest=4.45.2, local=4.45.2
launch_ros                                : latest=0.26.12, local=0.26.12
robot_state_publisher                     : latest=3.3.4, local=3.3.4
sensor_msgs_py                            : latest=5.3.8, local=5.3.8
nav2_voxel_grid                           : latest=1.3.12, local=1.3.12
ros2_control_test_assets                  : latest=4.45.2, local=4.45.2
opennav_docking_bt                        : latest=1.3.12, local=1.3.12
ompl                                      : latest=1.7.0, local=1.7.0
pal_statistics_msgs                       : latest=2.7.0, local=2.7.0
nav2_dwb_controller                       : latest=1.3.12, local=1.3.12
std_msgs                                  : latest=5.3.8, local=5.3.8
rcl_yaml_param_parser                     : latest=9.2.11, local=9.2.11
compressed_image_transport                : latest=4.0.7, local=4.0.7
ros_gz_sim_demos                          : latest=1.0.22, local=1.0.22
gz_msgs_vendor                            : latest=0.0.6, local=0.0.6
nav2_common                               : latest=1.3.12, local=1.3.12
shape_msgs                                : latest=5.3.8, local=5.3.8
rosbag2_py                                : latest=0.26.11, local=0.26.11
ros2lifecycle                             : latest=0.32.10, local=0.32.10
rcutils                                   : latest=6.7.6, local=6.7.6
ament_flake8                              : latest=0.17.5, local=0.17.5
tango_icons_vendor                        : latest=0.3.1, local=0.3.1
liblz4_vendor                             : latest=0.26.11, local=0.26.11
rqt_gui_py                                : latest=1.6.4, local=1.6.4
kdl_parser                                : latest=2.11.0, local=2.11.0
ros2cli                                   : latest=0.32.10, local=0.32.10
composition_interfaces                    : latest=2.0.4, local=2.0.4
launch_testing_ament_cmake                : latest=3.4.11, local=3.4.11
rosidl_typesupport_introspection_cpp      : latest=4.6.9, local=4.6.9
ament_cmake_copyright                     : latest=0.17.5, local=0.17.5
topic_tools                               : latest=1.3.4, local=1.3.4
rosidl_default_runtime                    : latest=1.6.1, local=1.6.1
steering_controllers_library              : latest=4.40.1, local=4.40.1
nav2_theta_star_planner                   : latest=1.3.12, local=1.3.12
ackermann_msgs                            : latest=2.0.2, local=2.0.2
gpio_controllers                          : latest=4.40.1, local=4.40.1
performance_test_fixture                  : latest=0.2.2, local=0.2.2
mrpt_libros_bridge                        : latest=3.5.3, local=3.5.3
ament_cmake_gen_version_h                 : latest=2.5.6, local=2.5.6
moveit_msgs                               : latest=2.6.0, local=2.6.0
tcb_span                                  : latest=1.3.1, local=1.3.1
moveit_core                               : latest=2.12.4, local=2.12.4
diagnostic_msgs                           : latest=5.3.8, local=5.3.8
nav2_route                                : latest=1.3.12, local=1.3.12
joint_state_broadcaster                   : latest=4.40.1, local=4.40.1
ros2topic                                 : latest=0.32.10, local=0.32.10
rqt_gui_cpp                               : latest=1.6.4, local=1.6.4
ament_cmake_lint_cmake                    : latest=0.17.5, local=0.17.5
console_bridge_vendor                     : latest=1.7.2, local=1.7.2
rpyutils                                  : latest=0.4.2, local=0.4.2
nav2_lifecycle_manager                    : latest=1.3.12, local=1.3.12
ament_cmake_gtest                         : latest=2.5.6, local=2.5.6
fastrtps_cmake_module                     : latest=3.6.4, local=3.6.4
rosbag2_cpp                               : latest=0.26.11, local=0.26.11
gz_sim_vendor                             : latest=0.0.10, local=0.0.10
rclcpp                                    : latest=28.1.21, local=28.1.21
ros_workspace                             : latest=1.0.3, local=1.0.3
ament_pep257                              : latest=0.17.5, local=0.17.5
rviz_ogre_vendor                          : latest=14.1.22, local=14.1.22
urdfdom_py                                : latest=1.2.1, local=1.2.1
rmw_implementation_cmake                  : latest=7.3.3, local=7.3.3
transmission_interface                    : latest=4.45.2, local=4.45.2
tricycle_steering_controller              : latest=4.40.1, local=4.40.1
ament_cmake_core                          : latest=2.5.6, local=2.5.6
ros_gz_interfaces                         : latest=1.0.22, local=1.0.22
gz_ros2_control                           : latest=1.2.19, local=1.2.19
effort_controllers                        : latest=4.40.1, local=4.40.1
rmw_dds_common                            : latest=3.1.1, local=3.1.1
radar_msgs                                : latest=0.2.2, local=0.2.2
sros2                                     : latest=0.13.6, local=0.13.6
gz_utils_vendor                           : latest=0.0.5, local=0.0.5
rosidl_generator_py                       : latest=0.22.2, local=0.22.2
rqt_plot                                  : latest=1.4.5, local=1.4.5
ros2component                             : latest=0.32.10, local=0.32.10
rqt_topic                                 : latest=1.7.5, local=1.7.5
mrpt_nav_interfaces                       : latest=2.5.0, local=2.5.0
rclpy                                     : latest=7.1.11, local=7.1.11
launch                                    : latest=3.4.11, local=3.4.11
ros_gz_image                              : latest=1.0.22, local=1.0.22
controller_manager                        : latest=4.45.2, local=4.45.2
ament_lint_cmake                          : latest=0.17.5, local=0.17.5
rviz_common                               : latest=14.1.22, local=14.1.22
nav2_map_server                           : latest=1.3.12, local=1.3.12
can_msgs                                  : latest=2.0.0, local=2.0.0
pluginlib                                 : latest=5.4.5, local=5.4.5
ament_cmake_export_include_directories    : latest=2.5.6, local=2.5.6
statistics_msgs                           : latest=2.0.4, local=2.0.4
object_recognition_msgs                   : latest=2.0.0, local=2.0.0
parameter_traits                          : latest=0.7.3, local=0.7.3
unique_identifier_msgs                    : latest=2.5.1, local=2.5.1
ament_cmake_clang_format                  : latest=0.17.5, local=0.17.5
service_msgs                              : latest=2.0.4, local=2.0.4
eigen3_cmake_module                       : latest=0.3.1, local=0.3.1
builtin_interfaces                        : latest=2.0.4, local=2.0.4
chained_filter_controller                 : latest=4.40.1, local=4.40.1
ros2bag                                   : latest=0.26.11, local=0.26.11
nav2_smac_planner                         : latest=1.3.12, local=1.3.12
ros2_medkit_serialization                 : latest=0.4.0, local=0.4.0
lifecycle_msgs                            : latest=2.0.4, local=2.0.4
dwb_plugins                               : latest=1.3.12, local=1.3.12
rviz_default_plugins                      : latest=14.1.22, local=14.1.22
ros2param                                 : latest=0.32.10, local=0.32.10
ament_cmake_export_link_flags             : latest=2.5.6, local=2.5.6
hardware_interface                        : latest=4.45.2, local=4.45.2
rosidl_default_generators                 : latest=1.6.1, local=1.6.1
pcl_msgs                                  : latest=1.0.0, local=1.0.0
ament_package                             : latest=0.16.5, local=0.16.5
gz_plugin_vendor                          : latest=0.0.5, local=0.0.5
nav2_simple_commander                     : latest=1.3.12, local=1.3.12
diagnostic_updater                        : latest=4.2.7, local=4.2.7
robot_localization                        : latest=3.8.3, local=3.8.3
moveit_common                             : latest=2.12.4, local=2.12.4
pcl_conversions                           : latest=2.6.4, local=2.6.4
ament_cmake_libraries                     : latest=2.5.6, local=2.5.6
python_qt_binding                         : latest=2.2.2, local=2.2.2
nav_msgs                                  : latest=5.3.8, local=5.3.8
image_transport_plugins                   : latest=4.0.7, local=4.0.7
ros2_medkit_fault_manager                 : latest=0.4.0, local=0.4.0
rosx_introspection                        : latest=2.3.0, local=2.3.0
rclcpp_action                             : latest=28.1.21, local=28.1.21
gz_fuel_tools_vendor                      : latest=0.0.6, local=0.0.6
ros2action                                : latest=0.32.10, local=0.32.10
tl_expected                               : latest=1.3.1, local=1.3.1
rmw                                       : latest=7.3.3, local=7.3.3
rosbag2_compression                       : latest=0.26.11, local=0.26.11
rqt_py_common                             : latest=1.6.4, local=1.6.4
sqlite3_vendor                            : latest=0.26.11, local=0.26.11
octomap_msgs                              : latest=2.0.1, local=2.0.1
tf_transformations                        : latest=1.1.1, local=1.1.1
filters                                   : latest=2.2.2, local=2.2.2
mcap_vendor                               : latest=0.26.11, local=0.26.11
nav2_controller                           : latest=1.3.12, local=1.3.12
python_orocos_kdl_vendor                  : latest=0.5.2, local=0.5.2
demo_nodes_cpp                            : latest=0.33.11, local=0.33.11
map_msgs                                  : latest=2.4.1, local=2.4.1
tf2_sensor_msgs                           : latest=0.36.21, local=0.36.21
tf2_kdl                                   : latest=0.36.21, local=0.36.21
example_interfaces                        : latest=0.12.1, local=0.12.1
ros2launch                                : latest=0.26.12, local=0.26.12
mola_state_estimation_smoother            : latest=2.4.0, local=2.4.0
ament_cmake_clang_tidy                    : latest=0.17.5, local=0.17.5
orocos_kdl_vendor                         : latest=0.5.2, local=0.5.2
mola_common                               : latest=0.6.1, local=0.6.1
dwb_msgs                                  : latest=1.3.12, local=1.3.12
ament_cmake_flake8                        : latest=0.17.5, local=0.17.5
point_cloud_transport                     : latest=4.0.8, local=4.0.8
ament_clang_tidy                          : latest=0.17.5, local=0.17.5
ament_cmake_export_dependencies           : latest=2.5.6, local=2.5.6
ament_cmake_test                          : latest=2.5.6, local=2.5.6
rosidl_typesupport_fastrtps_c             : latest=3.6.4, local=3.6.4
qt_gui                                    : latest=2.7.6, local=2.7.6
pose_broadcaster                          : latest=4.40.1, local=4.40.1
message_filters                           : latest=4.11.17, local=4.11.17
generate_parameter_library_py             : latest=0.7.3, local=0.7.3
sensor_msgs                               : latest=5.3.8, local=5.3.8
tricycle_controller                       : latest=4.40.1, local=4.40.1
ament_cmake_export_libraries              : latest=2.5.6, local=2.5.6
nav2_mppi_controller                      : latest=1.3.12, local=1.3.12
ament_index_cpp                           : latest=1.8.4, local=1.8.4
launch_testing_ros                        : latest=0.26.12, local=0.26.12
gz_cmake_vendor                           : latest=0.0.11, local=0.0.11
ros2pkg                                   : latest=0.32.10, local=0.32.10
rosidl_generator_type_description         : latest=4.6.9, local=4.6.9
rmw_implementation                        : latest=2.15.6, local=2.15.6
ament_cmake_ros                           : latest=0.12.1, local=0.12.1
ament_cmake                               : latest=2.5.6, local=2.5.6
nav2_behaviors                            : latest=1.3.12, local=1.3.12
mrpt_msgs                                 : latest=0.6.0, local=0.6.0
forward_command_controller                : latest=4.40.1, local=4.40.1
ament_cmake_uncrustify                    : latest=0.17.5, local=0.17.5
rviz_assimp_vendor                        : latest=14.1.22, local=14.1.22
mola_state_estimation                     : latest=2.4.0, local=2.4.0
moveit_ros_move_group                     : latest=2.12.4, local=2.12.4
ament_cmake_pytest                        : latest=2.5.6, local=2.5.6
pal_statistics                            : latest=2.7.0, local=2.7.0
tf2                                       : latest=0.36.21, local=0.36.21
ament_lint                                : latest=0.17.5, local=0.17.5
dwb_critics                               : latest=1.3.12, local=1.3.12
tf2_ros_py                                : latest=0.36.21, local=0.36.21
nav_2d_msgs                               : latest=1.3.12, local=1.3.12
stereo_msgs                               : latest=5.3.8, local=5.3.8
compressed_depth_image_transport          : latest=4.0.7, local=4.0.7
rosgraph_msgs                             : latest=2.0.4, local=2.0.4
geometry_msgs                             : latest=5.3.8, local=5.3.8
ros_gz                                    : latest=1.0.22, local=1.0.22
vision_msgs                               : latest=4.1.1, local=4.1.1
kinematics_interface                      : latest=1.7.1, local=1.7.1
omni_wheel_drive_controller               : latest=4.40.1, local=4.40.1
rcl_logging_spdlog                        : latest=3.1.1, local=3.1.1
mola_demos                                : latest=2.9.0, local=2.9.0
moveit_ros_planning_interface             : latest=2.12.4, local=2.12.4
ament_cmake_xmllint                       : latest=0.17.5, local=0.17.5
gps_sensor_broadcaster                    : latest=4.40.1, local=4.40.1
rcl_logging_interface                     : latest=3.1.1, local=3.1.1
tf2_msgs                                  : latest=0.36.21, local=0.36.21
rqt_image_view                            : latest=1.3.0, local=1.3.0
ament_cmake_cpplint                       : latest=0.17.5, local=0.17.5
tf2_eigen                                 : latest=0.36.21, local=0.36.21
moveit_ros_occupancy_map_monitor          : latest=2.12.4, local=2.12.4
gz_math_vendor                            : latest=0.0.9, local=0.0.9
marine_acoustic_msgs                      : latest=2.1.0, local=2.1.0
nav_2d_utils                              : latest=1.3.12, local=1.3.12
ament_cmake_include_directories           : latest=2.5.6, local=2.5.6
rosidl_generator_cpp                      : latest=4.6.9, local=4.6.9
generate_parameter_library                : latest=0.7.3, local=0.7.3
zstd_image_transport                      : latest=4.0.7, local=4.0.7
launch_yaml                               : latest=3.4.11, local=3.4.11
ament_cmake_export_targets                : latest=2.5.6, local=2.5.6
controller_manager_msgs                   : latest=4.45.2, local=4.45.2
tf2_ros                                   : latest=0.36.21, local=0.36.21
rosidl_typesupport_c                      : latest=3.2.3, local=3.2.3
cv_bridge                                 : latest=4.1.0, local=4.1.0
rosidl_typesupport_cpp                    : latest=3.2.3, local=3.2.3
rosbag2_transport                         : latest=0.26.11, local=0.26.11
ros2controlcli                            : latest=4.45.2, local=4.45.2
ament_cmake_export_definitions            : latest=2.5.6, local=2.5.6
range_sensor_broadcaster                  : latest=4.40.1, local=4.40.1
mola_metric_maps                          : latest=2.9.0, local=2.9.0
sdformat_vendor                           : latest=0.0.11, local=0.0.11
costmap_queue                             : latest=1.3.12, local=1.3.12
gz_ogre_next_vendor                       : latest=0.0.5, local=0.0.5
rviz2                                     : latest=14.1.22, local=14.1.22
smclib                                    : latest=4.2.0, local=4.2.0
urdf                                      : latest=2.10.1, local=2.10.1
rosidl_generator_rs                       : latest=0.4.12, local=0.4.12
nav2_smoother                             : latest=1.3.12, local=1.3.12
libstatistics_collector                   : latest=1.7.4, local=1.7.4
nav2_bt_navigator                         : latest=1.3.12, local=1.3.12
rosbag2_storage_sqlite3                   : latest=0.26.11, local=0.26.11
python_cmake_module                       : latest=0.11.1, local=0.11.1
rcl_interfaces                            : latest=2.0.4, local=2.0.4
rclcpp_components                         : latest=28.1.21, local=28.1.21
ros2service                               : latest=0.32.10, local=0.32.10
rosbag2_storage_mcap                      : latest=0.26.11, local=0.26.11
twist_mux_msgs                            : latest=3.0.1, local=3.0.1
rosidl_parser                             : latest=4.6.9, local=4.6.9
ament_cmake_auto                          : latest=2.5.6, local=2.5.6
launch_xml                                : latest=3.4.11, local=3.4.11
gz_gui_vendor                             : latest=0.0.5, local=0.0.5
osqp_vendor                               : latest=0.2.0, local=0.2.0
control_msgs                              : latest=5.9.0, local=5.9.0
ament_cppcheck                            : latest=0.17.5, local=0.17.5
gz_physics_vendor                         : latest=0.0.7, local=0.0.7
ackermann_steering_controller             : latest=4.40.1, local=4.40.1
ros2plugin                                : latest=5.4.5, local=5.4.5
ament_cmake_cppcheck                      : latest=0.17.5, local=0.17.5
ament_copyright                           : latest=0.17.5, local=0.17.5
slam_toolbox                              : latest=2.8.5, local=2.8.5
twist_stamper                             : latest=0.0.5, local=0.0.5
joint_limits                              : latest=4.45.2, local=4.45.2
ros2_control                              : latest=4.45.2, local=4.45.2
rmw_cyclonedds_cpp                        : latest=2.2.3, local=2.2.4
realtime_tools                            : latest=3.11.0, local=3.11.0
rosidl_runtime_cpp                        : latest=4.6.9, local=4.6.9
gz_rendering_vendor                       : latest=0.0.7, local=0.0.7
std_srvs                                  : latest=5.3.8, local=5.3.8
rcl                                       : latest=9.2.11, local=9.2.11
opennav_docking                           : latest=1.3.12, local=1.3.12
nav2_velocity_smoother                    : latest=1.3.12, local=1.3.12
rosbag2_storage_default_plugins           : latest=0.26.11, local=0.26.11
moveit_kinematics                         : latest=2.12.4, local=2.12.4
rosidl_generator_c                        : latest=4.6.9, local=4.6.9
libyaml_vendor                            : latest=1.6.4, local=1.6.4
launch_testing                            : latest=3.4.11, local=3.4.11
rosidl_cmake                              : latest=4.6.9, local=4.6.9
velocity_controllers                      : latest=4.40.1, local=4.40.1
joint_state_publisher                     : latest=2.4.1, local=2.4.1
mola_launcher                             : latest=2.9.0, local=2.9.0
trajectory_msgs                           : latest=5.3.8, local=5.3.8
nav2_waypoint_follower                    : latest=1.3.12, local=1.3.12

   PLATFORM INFORMATION
system           : Linux
platform info    : Linux-6.17.0-1032-oem-x86_64-with-glibc2.39
release          : 6.17.0-1032-oem
processor        : x86_64

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

   RMW MIDDLEWARE
middleware name    : rmw_cyclonedds_cpp

   ROS 2 INFORMATION
distribution name      : jazzy
distribution type      : ros2
distribution status    : active
release platforms      : {'debian': ['bookworm'], 'rhel': ['9'], 'ubuntu': ['noble']}

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

Steps to reproduce issue

1: Spin a node on an events-based executor and create action servers on that node from another thread:

#include <memory>
#include <thread>
#include <vector>

#include "example_interfaces/action/fibonacci.hpp"
#include "rclcpp/executors/events_cbg_executor/events_cbg_executor.hpp"
#include "rclcpp/rclcpp.hpp"
#include "rclcpp_action/rclcpp_action.hpp"

using Fibonacci = example_interfaces::action::Fibonacci;

int main(int argc, char ** argv)
{
  rclcpp::init(argc, argv);
  auto node = std::make_shared<rclcpp::Node>("action_server_race");
  rclcpp::executors::EventsCBGExecutor executor;
  executor.add_node(node);
  std::thread spinner([&executor]() {executor.spin();});

  for (int round = 0; round < 200; ++round) {
    std::vector<rclcpp_action::Server<Fibonacci>::SharedPtr> servers;
    for (int i = 0; i < 5; ++i) {
      servers.push_back(rclcpp_action::create_server<Fibonacci>(
        node, "fibonacci_" + std::to_string(i),
        [](const rclcpp_action::GoalUUID &, std::shared_ptr<const Fibonacci::Goal>) {
          return rclcpp_action::GoalResponse::REJECT;
        },
        [](std::shared_ptr<rclcpp_action::ServerGoalHandle<Fibonacci>>) {
          return rclcpp_action::CancelResponse::REJECT;
        },
        [](std::shared_ptr<rclcpp_action::ServerGoalHandle<Fibonacci>>) {}));
    }
  }

  executor.cancel();
  spinner.join();
  rclcpp::shutdown();
  return 0;

2: Build with -fsanitize=thread and run it.

Expected behavior

creating an action server while the node is spinning is safe, without data races

Actual behavior

TSan reports a data race on the rcl_clock_t jump callback array between two threads:

  • The expire thread spun up with ServerBase::set_on_ready_callback which calls rcl_clock_add_jump_callback under the clock mutex
  • ServerBase's constructor which calls rcl_clock_add_jump_callback without taking the clock mutex.
WARNING: ThreadSanitizer: data race
  Write of size 8 at 0x72140000fff0 by main thread:
    #0 realloc
    #1 rcl_clock_add_jump_callback
    #2 rclcpp_action::create_server<Fibonacci>(...) create_server.hpp:99
    #3 rclcpp_action::create_server<Fibonacci>(std::shared_ptr<rclcpp::Node>, ...) create_server.hpp:151
    #4 main repro.cpp:24

  Previous write of size 8 at 0x72140000fff0 by thread T23 (mutexes: write M0, write M1):
    #0 realloc
    #1 rcl_clock_add_jump_callback

  Mutex M1 created at:
    #1 rclcpp::TimeSource::attachClock(std::shared_ptr<rclcpp::Clock>)

  Thread T23 (running) created by thread T17 at:
    #0 pthread_create
    #1 std::thread::_M_start_thread(...)

similarly on destruction:

WARNING: ThreadSanitizer: data race
  Write of size 8 at 0x72480001ff80 by main thread:
    #0 realloc
    #1 rcl_clock_remove_jump_callback
    #2 std::_Sp_counted_deleter<rclcpp_action::Server<Fibonacci>*, rclcpp_action::create_server<...>::{lambda}>::_M_dispose()
    ...
    #7 std::shared_ptr<rclcpp_action::Server<Fibonacci>>::~shared_ptr()

  Previous write of size 8 at 0x72480001ff80 by thread T27 (mutexes: write M0, write M1):
    #0 realloc
    #1 rcl_clock_add_jump_callback

  Mutex M1 created at:
    #1 rclcpp::TimeSource::attachClock(std::shared_ptr<rclcpp::Clock>)

With no sanitizer, this was caught in user code as a crash from intermittent heap corruption on about 1 in 50 runs.

Additional information

Only on jazzy and only for events based executors (experimental and cbg), as kilted onward fixed action goal expiration for events executors without its own dedicated expiration thread.

Users can work around this until a fix is implemented by holding node->get_clock()->get_clock_mutex() around rclcpp_action::create_server(), and around the release of the last reference to an action server

Ngôn ngữ chính
C++
Star
815
Fork
572
Merge trung bình
6 ngày 8 giờ
Pull request đã merge (30 ngày)
20

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ros2/rclcpp

Tất cả issue của ros2/rclcpp

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.