Skip to content

Simple Action Server Race condition #2303

@tzskp1

Description

@tzskp1

Bug report

Required Info:

  • Operating System:
    • Ubuntu 18.04
  • ROS2 Version:
    • Rolling Source
  • Version or commit hash:
  • DDS implementation:
    • Fast-RTPS

Steps to reproduce issue

  1. On the arm device, run tb3_simulation_launch.py according to the official wiki.
  2. Nav2 goal in rviz2 panel.
  3. Wait for minutes.

I met SIGSEGV on an arm device.
backtrace is here.

#0  0x0000007fb6f5b6e4 in __GI___pthread_mutex_lock (mutex=0xa0) at pthread_mutex_lock.c:67
#1  0x0000007fb7edaa7c in __gthread_mutex_lock(pthread_mutex_t*) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#2  0x0000007fb7ee0788 in std::mutex::lock() () from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#3  0x0000007fa30eadf8 in std::lock_guard<std::mutex>::lock_guard (__m=..., this=<synthetic pointer>)
    at /usr/include/c++/7/bits/std_mutex.h:162
#4  rclcpp_action::ClientGoalHandle<nav2_msgs::action::ComputePathThroughPoses>::get_status (this=<optimized out>)
    at /ros2_master/install/rclcpp_action/include/rclcpp_action/client_goal_handle_impl.hpp:101
#5  nav2_behavior_tree::BtActionNode<nav2_msgs::action::ComputePathThroughPoses>::should_cancel_goal (this=0x7f7c00a050)
    at /ros/src/navigation2/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp:250
#6  nav2_behavior_tree::BtActionNode<nav2_msgs::action::ComputePathThroughPoses>::halt (this=0x7f7c00a050)
    at /ros/src/navigation2/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp:223
#7  0x0000007fb7f05234 in std::function<void (BT::TreeNode*)>::operator()(BT::TreeNode*) const ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#8  0x0000007fb7f042e4 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#9  0x0000007fb7f04378 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#10 0x0000007fb7f04378 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#11 0x0000007fb7f043d0 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#12 0x0000007fb7f04378 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#13 0x0000007fb7f04378 in BT::applyRecursiveVisitor(BT::TreeNode*, std::function<void (BT::TreeNode*)> const&) ()
   from /ros/install/behaviortree_cpp_v3/lib/libbehaviortree_cpp_v3.so
#14 0x0000007fb6c13424 in nav2_behavior_tree::BehaviorTreeEngine::haltAllActions (this=<optimized out>,
    root_node=0x7f7c009110) at /ros/src/navigation2/nav2_behavior_tree/src/behavior_tree_engine.cpp:120
#15 0x0000007fb73aa3f4 in nav2_behavior_tree::BtActionServer<nav2_msgs::action::NavigateThroughPoses>::executeCallback (
    this=0x55559f2cf0) at /ros/install/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp:224
#16 0x0000007fb73b800c in std::function<void ()>::operator()() const (this=0x5555c4a950)

I guess that the problem is null pointer access of goal_handle_ in bt_action_node.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions