Skip to content

Calling future.set_result from another thread does not wake up the executor #1467

@bjsowa

Description

@bjsowa

Generated by Generative AI

No response

Operating System:

Linux blazej-legion 6.12.30 #1-NixOS SMP PREEMPT_DYNAMIC Thu May 22 12:29:54 UTC 2025 x86_64 GNU/Linux

ROS version or commit hash:

humble, jazzy (testing), kilted (testing), Rolling (testing)

RMW implementation (if applicable):

rmw_fastrtps_cpp

RMW Configuration (if applicable):

No response

Client library (if applicable):

rclpy

'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        : UP,LOOPBACK,RUNNING
mtu          : 65536
inet         : 192.168.1.105
inet4        : ['192.168.1.105']
ether        : 98:fc:84:e0:2e:9e
inet6        : ['fe80::e7d3:eef1:498d:f03e%enp8s0f3u1u1']
netmask      : 255.255.255.0
device       : enp8s0f3u1u1
flags        : UP,BROADCAST,RUNNING,MULTICAST
mtu          : 1500
broadcast    : 192.168.1.255
inet         : 192.168.1.138
inet4        : ['192.168.1.138']
ether        : 00:41:0e:7a:71:85
inet6        : ['fe80::a705:5297:dd0e:d28%wlo1']
netmask      : 255.255.255.0
device       : wlo1
flags        : UP,BROADCAST,RUNNING,MULTICAST
mtu          : 1500
broadcast    : 192.168.1.255
ether        : 08:8f:c3:fd:5f:71
device       : enp2s0
flags        : UP,BROADCAST,MULTICAST
mtu          : 1500

   PACKAGE VERSIONS
image_transport_plugins                   : latest=5.0.3, local=5.0.3
zstd_image_transport                      : latest=5.0.3, local=5.0.3
webrtc_image_streamer                     : latest=N/A, local=0.0.0
leo_robot                                 : latest=2.2.0, local=2.3.0
leo_bringup                               : latest=2.2.0, local=2.3.0
web_video_server                          : latest=2.1.0, local=2.1.0
theora_image_transport                    : latest=5.0.3, local=5.0.3
rosbridge_test_msgs                       : latest=2.3.0, local=2.3.0
rosbridge_suite                           : latest=2.3.0, local=2.3.0
rosbridge_server                          : latest=2.3.0, local=2.3.0
rosbridge_msgs                            : latest=2.3.0, local=2.3.0
rosapi                                    : latest=2.3.0, local=2.3.0
rosbridge_library                         : latest=2.3.0, local=2.3.0
rosbag2_to_video                          : latest=1.0.1, local=1.0.1
rosapi_msgs                               : latest=2.3.0, local=2.3.0
libdatachannel_vendor                     : latest=N/A, local=0.0.0
leo_desktop                               : latest=3.0.0, local=3.0.0
leo_viz                                   : latest=3.0.0, local=3.0.0
leo                                       : latest=3.1.0, local=3.1.0
leo_teleop                                : latest=3.1.0, local=3.1.0
leo_simulator                             : latest=2.0.2, local=2.0.2
leo_fw                                    : latest=2.2.0, local=2.3.0
leo_msgs                                  : latest=3.1.0, local=3.1.0
leo_gz_bringup                            : latest=2.0.2, local=2.0.2
leo_gz_worlds                             : latest=2.0.2, local=2.0.2
leo_gz_plugins                            : latest=2.0.2, local=2.0.2
leo_filters                               : latest=2.2.0, local=2.3.0
leo_description                           : latest=3.1.0, local=3.1.0
compressed_image_transport                : latest=5.0.3, local=5.0.3
compressed_depth_image_transport          : latest=5.0.3, local=5.0.3
aruco_opencv                              : latest=6.0.2, local=6.0.2
aruco_opencv_msgs                         : latest=6.0.2, local=6.0.2
ament_package                             : latest=0.18.0, local=0.18.0
canopen_core                              : latest=0.3.0, local=0.3.0
canopen_master_driver                     : latest=0.3.0, local=0.3.0
canopen_base_driver                       : latest=0.3.0, local=0.3.0
canopen_proxy_driver                      : latest=0.3.0, local=0.3.0
v4l2_camera                               : latest=0.7.1, local=0.7.1
ros_workspace                             : latest=1.0.3, local=1.0.3
ament_cmake_core                          : latest=2.8.2, local=2.8.1
ament_cmake_export_definitions            : latest=2.8.2, local=2.8.1
ament_cmake_libraries                     : latest=2.8.2, local=2.8.1
ament_cmake_export_dependencies           : latest=2.8.2, local=2.8.1
ament_cmake_export_include_directories    : latest=2.8.2, local=2.8.1
ament_cmake_export_libraries              : latest=2.8.2, local=2.8.1
ament_cmake_export_link_flags             : latest=2.8.2, local=2.8.1
ament_cmake_export_targets                : latest=2.8.2, local=2.8.1
ament_cmake_gen_version_h                 : latest=2.8.2, local=2.8.1
ament_cmake_python                        : latest=2.8.2, local=2.8.1
ament_cmake_include_directories           : latest=2.8.2, local=2.8.1
ament_cmake_target_dependencies           : latest=2.8.2, local=2.8.1
ament_cmake_test                          : latest=2.8.2, local=2.8.1
ament_cmake_version                       : latest=2.8.2, local=2.8.1
ament_cmake                               : latest=2.8.2, local=2.8.1
ament_cppcheck                            : latest=0.20.0, local=0.20.0
ament_cmake_cppcheck                      : latest=0.20.0, local=0.20.0
ament_cpplint                             : latest=0.20.0, local=0.20.0
ament_cmake_cpplint                       : latest=0.20.0, local=0.20.0
ament_lint                                : latest=0.20.0, local=0.20.0
ament_flake8                              : latest=0.20.0, local=0.20.0
ament_cmake_flake8                        : latest=0.20.0, local=0.20.0
ament_pep257                              : latest=0.20.0, local=0.20.0
ament_cmake_pep257                        : latest=0.20.0, local=0.20.0
uncrustify_vendor                         : latest=3.2.0, local=3.2.0
ament_uncrustify                          : latest=0.20.0, local=0.20.0
ament_cmake_uncrustify                    : latest=0.20.0, local=0.20.0
ament_index_python                        : latest=1.12.0, local=1.12.0
rosidl_typesupport_interface              : latest=4.10.0, local=4.10.0
rosidl_cli                                : latest=4.10.0, local=4.10.0
rosidl_adapter                            : latest=4.10.0, local=4.10.0
rosidl_parser                             : latest=4.10.0, local=4.10.0
rosidl_pycommon                           : latest=4.10.0, local=4.10.0
rosidl_cmake                              : latest=4.10.0, local=4.10.0
rosidl_generator_type_description         : latest=4.10.0, local=4.10.0
rpyutils                                  : latest=0.7.0, local=0.7.0
ament_cmake_ros_core                      : latest=0.15.0, local=0.15.0
ament_index_cpp                           : latest=1.12.0, local=1.12.0
libyaml_vendor                            : latest=1.8.0, local=1.8.0
spdlog_vendor                             : latest=1.8.0, local=1.8.0
rmw_implementation_cmake                  : latest=7.9.0, local=7.9.0
tracetools                                : latest=8.7.0, local=8.7.0
console_bridge_vendor                     : latest=1.9.0, local=1.9.0
ament_black                               : latest=0.2.6, local=0.2.6
ament_clang_format                        : latest=0.20.0, local=0.20.0
ament_cmake_gtest                         : latest=2.8.2, local=2.8.1
ament_cmake_gmock                         : latest=2.8.2, local=2.8.1
ament_cmake_auto                          : latest=2.8.2, local=2.8.1
ament_cmake_black                         : latest=0.2.6, local=0.2.6
ament_cmake_clang_format                  : latest=0.20.0, local=0.20.0
ament_copyright                           : latest=0.20.0, local=0.20.0
ament_cmake_copyright                     : latest=0.20.0, local=0.20.0
ament_lint_cmake                          : latest=0.20.0, local=0.20.0
ament_cmake_lint_cmake                    : latest=0.20.0, local=0.20.0
ament_mypy                                : latest=0.20.0, local=0.20.0
ament_cmake_mypy                          : latest=0.20.0, local=0.20.0
ament_cmake_pytest                        : latest=2.8.2, local=2.8.1
zenoh_cpp_vendor                          : latest=0.7.1, local=0.7.1
ament_cmake_vendor_package                : latest=2.8.2, local=2.8.1
ament_xmllint                             : latest=0.20.0, local=0.20.0
ament_cmake_xmllint                       : latest=0.20.0, local=0.20.0
ament_lint_auto                           : latest=0.20.0, local=0.20.0
ament_lint_common                         : latest=0.20.0, local=0.20.0
angles                                    : latest=1.16.0, local=1.16.0
yaml_cpp_vendor                           : latest=9.2.0, local=9.2.0
osrf_pycommon                             : latest=2.1.4, local=2.1.4
launch                                    : latest=3.9.0, local=3.9.0
tinyxml2_vendor                           : latest=0.11.0, local=0.11.0
launch_xml                                : latest=3.9.0, local=3.9.0
eigen3_cmake_module                       : latest=0.5.0, local=0.5.0
orocos_kdl_vendor                         : latest=0.8.0, local=0.8.0
sdl2_vendor                               : latest=3.3.0, local=3.3.0
rttest                                    : latest=0.19.0, local=0.19.0
tlsf                                      : latest=0.11.0, local=0.11.0
pybind11_vendor                           : latest=3.3.0, local=3.3.0
python_orocos_kdl_vendor                  : latest=0.8.0, local=0.8.0
launch_yaml                               : latest=3.9.0, local=3.9.0
launch_testing                            : latest=3.9.0, local=3.9.0
launch_testing_ament_cmake                : latest=3.9.0, local=3.9.0
ros_environment                           : latest=4.4.0, local=4.4.0
rosidl_runtime_py                         : latest=0.15.0, local=0.15.0
keyboard_handler                          : latest=0.5.0, local=0.5.0
zstd_vendor                               : latest=0.33.0, local=0.33.0
liblz4_vendor                             : latest=0.33.0, local=0.33.0
mcap_vendor                               : latest=0.33.0, local=0.33.0
sqlite3_vendor                            : latest=0.33.0, local=0.33.0
python_qt_binding                         : latest=2.4.0, local=2.4.0
tango_icons_vendor                        : latest=0.5.0, local=0.5.0
qt_gui                                    : latest=2.10.1, local=2.10.1
qt_gui_py_common                          : latest=2.10.1, local=2.10.1
qt_dotgraph                               : latest=2.10.1, local=2.10.1
gz_cmake_vendor                           : latest=0.3.1, local=0.3.1
gz_utils_vendor                           : latest=0.3.0, local=0.3.0
rviz_ogre_vendor                          : latest=15.1.3, local=15.1.3
libcurl_vendor                            : latest=3.8.1, local=3.8.1
rviz_assimp_vendor                        : latest=15.1.3, local=15.1.3
domain_coordinator                        : latest=0.15.0, local=0.15.0
generate_parameter_library_py             : latest=0.4.0, local=0.4.0
tcb_span                                  : latest=1.0.2, local=1.0.2
tl_expected                               : latest=1.0.2, local=1.0.2
gz_dartsim_vendor                         : latest=0.1.2, local=0.1.2
gz_tools_vendor                           : latest=0.1.2, local=0.1.2
gz_ogre_next_vendor                       : latest=0.1.0, local=0.1.0
lely_core_libraries                       : latest=0.3.0, local=0.3.0
xacro                                     : latest=2.0.13, local=2.0.13
gz_math_vendor                            : latest=0.3.1, local=0.3.1
sdformat_vendor                           : latest=0.2.5, local=0.2.5
ros2_control_test_assets                  : latest=5.1.0, local=5.1.0
gz_common_vendor                          : latest=0.2.3, local=0.2.3
gz_msgs_vendor                            : latest=0.2.3, local=0.2.3
gz_fuel_tools_vendor                      : latest=0.2.1, local=0.2.1
gz_plugin_vendor                          : latest=0.2.2, local=0.2.2
gz_rendering_vendor                       : latest=0.2.1, local=0.2.1
gz_transport_vendor                       : latest=0.2.2, local=0.2.2
gz_gui_vendor                             : latest=0.2.1, local=0.2.1
gz_physics_vendor                         : latest=0.2.1, local=0.2.1
gz_sensors_vendor                         : latest=0.2.1, local=0.2.1
gz_sim_vendor                             : latest=0.2.1, local=0.2.1
rcutils                                   : latest=6.10.1, local=6.10.1
rosidl_runtime_c                          : latest=4.10.0, local=4.10.0
rosidl_dynamic_typesupport                : latest=0.4.0, local=0.4.0
rmw                                       : latest=7.9.0, local=7.9.0
rosidl_generator_c                        : latest=4.10.0, local=4.10.0
rcpputils                                 : latest=2.14.0, local=2.14.0
rosidl_typesupport_c                      : latest=3.4.0, local=3.4.0
rosidl_generator_py                       : latest=0.25.0, local=0.25.0
rosidl_runtime_cpp                        : latest=4.10.0, local=4.10.0
rosidl_typesupport_cpp                    : latest=3.4.0, local=3.4.0
rosidl_generator_cpp                      : latest=4.10.0, local=4.10.0
rosidl_typesupport_fastrtps_cpp           : latest=3.9.0, local=3.9.0
rosidl_typesupport_fastrtps_c             : latest=3.9.0, local=3.9.0
rosidl_typesupport_introspection_c        : latest=4.10.0, local=4.10.0
rosidl_typesupport_introspection_cpp      : latest=4.10.0, local=4.10.0
rosidl_core_runtime                       : latest=0.4.0, local=0.4.0
builtin_interfaces                        : latest=2.4.0, local=2.4.0
service_msgs                              : latest=2.4.0, local=2.4.0
unique_identifier_msgs                    : latest=2.8.0, local=2.8.0
action_msgs                               : latest=2.4.0, local=2.4.0
rosidl_default_runtime                    : latest=1.8.0, local=1.8.0
example_interfaces                        : latest=0.14.0, local=0.14.0
rcl_interfaces                            : latest=2.4.0, local=2.4.0
rcl_logging_interface                     : latest=3.3.0, local=3.3.0
rcl_logging_spdlog                        : latest=3.3.0, local=3.3.0
rcl_yaml_param_parser                     : latest=10.2.1, local=10.2.1
rmw_security_common                       : latest=7.9.0, local=7.9.0
rmw_dds_common                            : latest=3.3.0, local=3.3.0
rmw_fastrtps_shared_cpp                   : latest=9.4.0, local=9.4.0
rosidl_dynamic_typesupport_fastrtps       : latest=0.5.0, local=0.5.0
rmw_fastrtps_cpp                          : latest=9.4.0, local=9.4.0
rmw_cyclonedds_cpp                        : latest=4.1.0, local=4.1.0
rmw_implementation                        : latest=3.1.0, local=3.1.0
type_description_interfaces               : latest=2.4.0, local=2.4.0
rcl                                       : latest=10.2.1, local=10.2.1
statistics_msgs                           : latest=2.4.0, local=2.4.0
libstatistics_collector                   : latest=2.1.0, local=2.1.0
rosgraph_msgs                             : latest=2.4.0, local=2.4.0
rclcpp                                    : latest=29.6.0, local=29.6.0
rcl_action                                : latest=10.2.1, local=10.2.1
rclcpp_action                             : latest=29.6.0, local=29.6.0
class_loader                              : latest=2.9.0, local=2.9.0
composition_interfaces                    : latest=2.4.0, local=2.4.0
rclcpp_components                         : latest=29.6.0, local=29.6.0
action_tutorials_cpp                      : latest=0.37.0, local=0.37.0
lifecycle_msgs                            : latest=2.4.0, local=2.4.0
rcl_lifecycle                             : latest=10.2.1, local=10.2.1
rclpy                                     : latest=9.2.0, local=9.2.0
action_tutorials_py                       : latest=0.37.0, local=0.37.0
std_msgs                                  : latest=5.7.0, local=5.7.0
actuator_msgs                             : latest=0.0.1, local=0.0.1
rmw_test_fixture                          : latest=0.15.0, local=0.15.0
rmw_zenoh_cpp                             : latest=0.7.1, local=0.7.1
rmw_test_fixture_implementation           : latest=0.15.0, local=0.15.0
ament_cmake_ros                           : latest=0.15.0, local=0.15.0
async_web_server_cpp                      : latest=2.0.0, local=2.0.0
geometry_msgs                             : latest=5.7.0, local=5.7.0
sensor_msgs                               : latest=5.7.0, local=5.7.0
camera_calibration_parsers                : latest=6.2.0, local=6.2.0
rclcpp_lifecycle                          : latest=29.6.0, local=29.6.0
camera_info_manager                       : latest=6.2.0, local=6.2.0
canopen_interfaces                        : latest=0.3.0, local=0.3.0
diagnostic_msgs                           : latest=5.7.0, local=5.7.0
nav_msgs                                  : latest=5.7.0, local=5.7.0
shape_msgs                                : latest=5.7.0, local=5.7.0
std_srvs                                  : latest=5.7.0, local=5.7.0
stereo_msgs                               : latest=5.7.0, local=5.7.0
trajectory_msgs                           : latest=5.7.0, local=5.7.0
visualization_msgs                        : latest=5.7.0, local=5.7.0
common_interfaces                         : latest=5.7.0, local=5.7.0
launch_ros                                : latest=0.29.0, local=0.29.0
composition                               : latest=0.37.0, local=0.37.0
cv_bridge                                 : latest=4.1.0, local=4.1.0
message_filters                           : latest=7.2.1, local=7.2.1
pluginlib                                 : latest=5.7.0, local=5.7.0
image_transport                           : latest=6.2.0, local=6.2.0
control_msgs                              : latest=6.1.0, local=6.1.0
filters                                   : latest=2.2.1, local=2.2.1
parameter_traits                          : latest=0.4.0, local=0.4.0
generate_parameter_library                : latest=0.4.0, local=0.4.0
realtime_tools                            : latest=4.3.0, local=4.3.0
tf2                                       : latest=0.42.1, local=0.42.1
tf2_msgs                                  : latest=0.42.1, local=0.42.1
tf2_ros                                   : latest=0.42.1, local=0.42.1
tf2_py                                    : latest=0.42.1, local=0.42.1
tf2_ros_py                                : latest=0.42.1, local=0.42.1
tf2_geometry_msgs                         : latest=0.42.1, local=0.42.1
control_toolbox                           : latest=5.4.0, local=5.4.0
urdf_parser_plugin                        : latest=2.13.0, local=2.13.0
urdf                                      : latest=2.13.0, local=2.13.0
joint_limits                              : latest=5.1.0, local=5.1.0
pal_statistics_msgs                       : latest=2.6.2, local=2.6.2
pal_statistics                            : latest=2.6.2, local=2.6.2
sdformat_urdf                             : latest=2.0.1, local=2.0.1
hardware_interface                        : latest=5.1.0, local=5.1.0
controller_interface                      : latest=5.1.0, local=5.1.0
controller_manager_msgs                   : latest=5.1.0, local=5.1.0
diagnostic_updater                        : latest=4.4.6, local=4.4.6
ros2cli                                   : latest=0.39.0, local=0.39.0
ros2node                                  : latest=0.39.0, local=0.39.0
ros2topic                                 : latest=0.39.0, local=0.39.0
ros2service                               : latest=0.39.0, local=0.39.0
ros2param                                 : latest=0.39.0, local=0.39.0
ros2pkg                                   : latest=0.39.0, local=0.39.0
ros2run                                   : latest=0.39.0, local=0.39.0
controller_manager                        : latest=5.1.0, local=5.1.0
demo_nodes_cpp                            : latest=0.37.0, local=0.37.0
demo_nodes_cpp_native                     : latest=0.37.0, local=0.37.0
demo_nodes_py                             : latest=0.37.0, local=0.37.0
image_geometry                            : latest=4.1.0, local=4.1.0
depthimage_to_laserscan                   : latest=2.5.1, local=2.5.1
dummy_map_server                          : latest=0.37.0, local=0.37.0
dummy_sensors                             : latest=0.37.0, local=0.37.0
kdl_parser                                : latest=2.13.0, local=2.13.0
robot_state_publisher                     : latest=3.5.1, local=3.5.1
dummy_robot_bringup                       : latest=0.37.0, local=0.37.0
examples_rclcpp_minimal_action_client     : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_action_server     : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_client            : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_composition       : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_publisher         : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_service           : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_subscriber        : latest=0.21.0, local=0.21.0
examples_rclcpp_minimal_timer             : latest=0.21.0, local=0.21.0
examples_rclcpp_multithreaded_executor    : latest=0.21.0, local=0.21.0
examples_rclpy_executors                  : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_action_client      : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_action_server      : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_client             : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_publisher          : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_service            : latest=0.21.0, local=0.21.0
examples_rclpy_minimal_subscriber         : latest=0.21.0, local=0.21.0
image_tools                               : latest=0.37.0, local=0.37.0
intra_process_demo                        : latest=0.37.0, local=0.37.0
joy                                       : latest=3.3.0, local=3.3.0
lifecycle                                 : latest=0.37.0, local=0.37.0
logging_demo                              : latest=0.37.0, local=0.37.0
pcl_msgs                                  : latest=1.0.0, local=1.0.0
pcl_conversions                           : latest=2.7.2, local=2.7.2
pendulum_msgs                             : latest=0.37.0, local=0.37.0
tlsf_cpp                                  : latest=0.19.0, local=0.19.0
pendulum_control                          : latest=0.37.0, local=0.37.0
quality_of_service_demo_cpp               : latest=0.37.0, local=0.37.0
quality_of_service_demo_py                : latest=0.37.0, local=0.37.0
tf2_bullet                                : latest=0.42.1, local=0.42.1
tf2_eigen                                 : latest=0.42.1, local=0.42.1
tf2_eigen_kdl                             : latest=0.42.1, local=0.42.1
tf2_kdl                                   : latest=0.42.1, local=0.42.1
sensor_msgs_py                            : latest=5.7.0, local=5.7.0
tf2_sensor_msgs                           : latest=0.42.1, local=0.42.1
tf2_tools                                 : latest=0.42.1, local=0.42.1
geometry2                                 : latest=0.42.1, local=0.42.1
launch_testing_ros                        : latest=0.29.0, local=0.29.0
ros2action                                : latest=0.39.0, local=0.39.0
ros2component                             : latest=0.39.0, local=0.39.0
ros2doctor                                : latest=0.39.0, local=0.39.0
ros2interface                             : latest=0.39.0, local=0.39.0
ros2launch                                : latest=0.29.0, local=0.29.0
ros2lifecycle                             : latest=0.39.0, local=0.39.0
ros2multicast                             : latest=0.39.0, local=0.39.0
sros2                                     : latest=0.16.0, local=0.16.0
ros2cli_common_extensions                 : latest=0.5.0, local=0.5.0
rosidl_core_generators                    : latest=0.4.0, local=0.4.0
rosidl_default_generators                 : latest=1.8.0, local=1.8.0
sros2_cmake                               : latest=0.16.0, local=0.16.0
ros_core                                  : latest=0.13.0, local=0.13.0
rosbag2_storage                           : latest=0.33.0, local=0.33.0
rosbag2_cpp                               : latest=0.33.0, local=0.33.0
rosbag2_compression                       : latest=0.33.0, local=0.33.0
rosbag2_interfaces                        : latest=0.33.0, local=0.33.0
rosbag2_transport                         : latest=0.33.0, local=0.33.0
rosbag2_py                                : latest=0.33.0, local=0.33.0
ros2bag                                   : latest=0.33.0, local=0.33.0
rosbag2_compression_zstd                  : latest=0.33.0, local=0.33.0
rosbag2_storage_mcap                      : latest=0.33.0, local=0.33.0
rosbag2_storage_sqlite3                   : latest=0.33.0, local=0.33.0
rosbag2_storage_default_plugins           : latest=0.33.0, local=0.33.0
rosbag2                                   : latest=0.33.0, local=0.33.0
ros_base                                  : latest=0.13.0, local=0.13.0
rqt_gui                                   : latest=1.10.0, local=1.10.0
rqt_gui_py                                : latest=1.10.0, local=1.10.0
rqt_py_common                             : latest=1.10.0, local=1.10.0
rqt_console                               : latest=2.4.0, local=2.4.0
rqt_msg                                   : latest=1.7.0, local=1.7.0
rqt_action                                : latest=2.4.0, local=2.4.0
rqt_bag                                   : latest=2.1.0, local=2.1.0
rqt_plot                                  : latest=1.7.1, local=1.7.1
rqt_bag_plugins                           : latest=2.1.0, local=2.1.0
rqt_graph                                 : latest=1.8.0, local=1.8.0
qt_gui_cpp                                : latest=2.10.1, local=2.10.1
rqt_gui_cpp                               : latest=1.10.0, local=1.10.0
rqt_image_view                            : latest=1.3.0, local=1.3.0
rqt_publisher                             : latest=1.10.0, local=1.10.0
rqt_py_console                            : latest=1.5.0, local=1.5.0
rqt_reconfigure                           : latest=1.8.0, local=1.8.0
rqt_service_caller                        : latest=1.5.0, local=1.5.0
rqt_shell                                 : latest=1.4.0, local=1.4.0
rqt_srv                                   : latest=1.4.0, local=1.4.0
rqt_topic                                 : latest=1.9.0, local=1.9.0
rqt_common_plugins                        : latest=1.2.0, local=1.2.0
interactive_markers                       : latest=2.8.0, local=2.8.0
laser_geometry                            : latest=2.11.0, local=2.11.0
map_msgs                                  : latest=2.6.0, local=2.6.0
point_cloud_transport                     : latest=5.2.0, local=5.2.0
resource_retriever                        : latest=3.8.1, local=3.8.1
rviz_rendering                            : latest=15.1.3, local=15.1.3
rviz_common                               : latest=15.1.3, local=15.1.3
rviz_resource_interfaces                  : latest=15.1.3, local=15.1.3
rviz_default_plugins                      : latest=15.1.3, local=15.1.3
rviz2                                     : latest=15.1.3, local=15.1.3
teleop_twist_joy                          : latest=2.6.3, local=2.6.3
teleop_twist_keyboard                     : latest=2.4.0, local=2.4.0
topic_monitor                             : latest=0.37.0, local=0.37.0
turtlesim_msgs                            : latest=1.10.1, local=1.10.1
turtlesim                                 : latest=1.10.1, local=1.10.1
desktop                                   : latest=0.13.0, local=0.13.0
diff_drive_controller                     : latest=5.0.2, local=5.0.2
forward_command_controller                : latest=5.0.2, local=5.0.2
gps_msgs                                  : latest=2.1.0, local=2.1.0
tracetools_image_pipeline                 : latest=7.0.0, local=7.0.0
image_proc                                : latest=7.0.0, local=7.0.0
image_publisher                           : latest=7.0.0, local=7.0.0
joint_state_broadcaster                   : latest=5.0.2, local=5.0.2
joint_state_publisher                     : latest=2.4.0, local=2.4.0
joint_state_publisher_gui                 : latest=2.4.0, local=2.4.0
joy_linux                                 : latest=3.3.0, local=3.3.0
ros_gz_interfaces                         : latest=3.0.1, local=3.0.1
vision_msgs                               : latest=4.2.0, local=4.2.0
ros_gz_bridge                             : latest=3.0.1, local=3.0.1
ros_gz_image                              : latest=3.0.1, local=3.0.1
ros_gz_sim                                : latest=3.0.1, local=3.0.1
ros2test                                  : latest=0.9.0, local=0.9.0
ros_testing                               : latest=0.9.0, local=0.9.0
test_msgs                                 : latest=2.4.0, local=2.4.0

   PLATFORM INFORMATION
system           : Linux
platform info    : Linux-6.12.30-x86_64-with-glibc2.39
release          : 6.12.30
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      : rolling
distribution type      : ros2
distribution status    : rolling
release platforms      : {'debian': ['bookworm'], 'rhel': ['9'], 'ubuntu': ['noble']}

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

Steps to reproduce issue

Run this script:

#!/usr/bin/env python3

import threading

import rclpy
from rclpy.task import Future
from rclpy.executors import SingleThreadedExecutor

rclpy.init()
executor = SingleThreadedExecutor()
future = Future()


async def await_task():
    print("Waiting for future to complete...")
    await future
    print("Future completed with result:", future.result())


def future_thread():
    print("Simulating work in a separate thread...")
    threading.Event().wait(2)  # Simulate some work
    future.set_result("Task completed!")
    print("Future set!")
    # executor.wake()  # Wake the executor to process the future

thread = threading.Thread(target=future_thread)
thread.start()

executor.create_task(await_task())
executor.spin()

Expected behavior

The executor wakes up and completes await_task coroutine after another threads runs future.set_result.

Actual behavior

The task gets stuck on await future unless I uncomment the executor.wake() call

Additional information

No response

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