Skip to content

Segfault creating a publisher in MoveIt 2 Example, only with Fast DDS RMW #1118

@sea-bass

Description

@sea-bass

Bug report

Required Info:

  • Operating System:
    • Ubuntu 22.04
  • Installation type:
    • Binaries
  • Version or commit hash:
    • Rolling
  • DDS implementation:
    • Fast DDS
  • Client library (if applicable):
    • rclcpp

Steps to reproduce issue

We tried running some of our MoveIt Tutorials on the latest version of ROS 2 Rolling, and ran into a segfault creating a publisher that only occurs with Fast DDS as the middleware -- switching to Cyclone DDS resolves the issue.

Our code snippet that fails is:

display_path_ =
      context_->moveit_cpp_->getNode()->create_publisher<moveit_msgs::msg::DisplayTrajectory>(DISPLAY_PATH_TOPIC, 10);

where the segfault is:

[move_group-4] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
[move_group-4]   what():  could not create publisher: create_publisher() called for existing topic name rt/display_planned_path with incompatible type moveit_msgs::msg::dds_::DisplayTrajectory_, at ./src/publisher.cpp:145, at ./src/rcl/publisher.c:117
[move_group-4] Stack trace (most recent call last):
[move_group-4] #22   Object "", at 0xffffffffffffffff, in 
[move_group-4] #21   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_move_group/lib/moveit_ros_move_group/move_group", at 0x557090e89f04, in _start
[move_group-4] #20   Source "../csu/libc-start.c", line 392, in __libc_start_main_impl [0x7f98f8c29e3f]
[move_group-4] #19   Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main [0x7f98f8c29d8f]
[move_group-4] #18   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_move_group/lib/moveit_ros_move_group/move_group", at 0x557090e890d3, in main
[move_group-4] #17   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_cpp.so.2.8.0", at 0x7f98f9a5c496, in moveit_cpp::MoveItCpp::MoveItCpp(std::shared_ptr<rclcpp::Node> const&, moveit_cpp::MoveItCpp::Options const&)
[move_group-4] #16   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_cpp.so.2.8.0", at 0x7f98f9a5b3fb, in moveit_cpp::MoveItCpp::loadPlanningPipelines(moveit_cpp::MoveItCpp::PlanningPipelineOptions const&)
[move_group-4] #15   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_planning_pipeline_interfaces.so.2.8.0", at 0x7f98f92d8acf, in moveit::planning_pipeline_interfaces::createPlanningPipelineMap(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::shared_ptr<moveit::core::RobotModel const> const&, std::shared_ptr<rclcpp::Node> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[move_group-4] #14   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_planning_pipeline.so.2.8.0", at 0x7f98f8ebb968, in planning_pipeline::PlanningPipeline::PlanningPipeline(std::shared_ptr<moveit::core::RobotModel const> const&, std::shared_ptr<rclcpp::Node> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[move_group-4] #13   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_planning_pipeline.so.2.8.0", at 0x7f98f8ee76a7, in void planning_pipeline::loadPluginVector<planning_interface::PlanningResponseAdapter>(std::shared_ptr<rclcpp::Node> const&, std::unique_ptr<pluginlib::ClassLoader<planning_interface::PlanningResponseAdapter>, std::default_delete<pluginlib::ClassLoader<planning_interface::PlanningResponseAdapter> > > const&, std::vector<std::shared_ptr<planning_interface::PlanningResponseAdapter const>, std::allocator<std::shared_ptr<planning_interface::PlanningResponseAdapter const> > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[move_group-4] #12   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_default_planning_response_adapter_plugins.so.2.8.0", at 0x7f98c37ab05d, in default_planning_response_adapters::DisplayMotionPath::initialize(std::shared_ptr<rclcpp::Node> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[move_group-4] #11   Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_default_planning_response_adapter_plugins.so.2.8.0", at 0x7f98c37a750d, in std::shared_ptr<rclcpp::Publisher<moveit_msgs::msg::DisplayTrajectory_<std::allocator<void> >, std::allocator<void> > > rclcpp::detail::create_publisher<moveit_msgs::msg::DisplayTrajectory_<std::allocator<void> >, std::allocator<void>, rclcpp::Publisher<moveit_msgs::msg::DisplayTrajectory_<std::allocator<void> >, std::allocator<void> >, rclcpp::Node, rclcpp::Node>(rclcpp::Node&, rclcpp::Node&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&, rclcpp::PublisherOptionsWithAllocator<std::allocator<void> > const&)
[move_group-4] #10   Object "/opt/ros/rolling/lib/librclcpp.so", at 0x7f98f954cb1b, in rclcpp::node_interfaces::NodeTopics::create_publisher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::PublisherFactory const&, rclcpp::QoS const&)
[move_group-4] #9    Object "/home/sebastian/workspace/moveit_ws/install/moveit_ros_planning/lib/libmoveit_default_planning_response_adapter_plugins.so.2.8.0", at 0x7f98c37a6c3e, in std::_Function_handler<std::shared_ptr<rclcpp::PublisherBase> (rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&), rclcpp::create_publisher_factory<moveit_msgs::msg::DisplayTrajectory_<std::allocator<void> >, std::allocator<void>, rclcpp::Publisher<moveit_msgs::msg::DisplayTrajectory_<std::allocator<void> >, std::allocator<void> > >(rclcpp::PublisherOptionsWithAllocator<std::allocator<void> > const&)::{lambda(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&)#1}>::_M_invoke(std::_Any_data const&, rclcpp::node_interfaces::NodeBaseInterface*&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&)
[move_group-4] #8    Object "/opt/ros/rolling/lib/librclcpp.so", at 0x7f98f95986cb, in rclcpp::PublisherBase::PublisherBase(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rosidl_message_type_support_t const&, rcl_publisher_options_s const&, rclcpp::PublisherEventCallbacks const&, bool)
[move_group-4] #7    Object "/opt/ros/rolling/lib/librclcpp.so", at 0x7f98f94fe6d8, in rclcpp::exceptions::throw_from_rcl_error(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rcutils_error_state_s const*, void (*)())
[move_group-4] #6    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f98f90ae1fd, in std::rethrow_exception(std::__exception_ptr::exception_ptr)
[move_group-4] #5    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f98f90ae276, in std::terminate()
[move_group-4] #4    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f98f90ae20b, in 
[move_group-4] #3    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f98f90a2b9d, in 
[move_group-4] #2    Source "./stdlib/abort.c", line 79, in abort [0x7f98f8c287f2]
[move_group-4] #1    Source "../sysdeps/posix/raise.c", line 26, in raise [0x7f98f8c42475]
[move_group-4] #0  | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal
[move_group-4]     | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation
[move_group-4]       Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x7f98f8c969fc]
[move_group-4] Aborted (Signal sent by tkill() 494385 1000)

Expected behavior

Should work with all RMW implementations.

Actual behavior

Segfaults with Fast DDS, which is the default RMW.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions