Skip to content

move_group crashes with free(): invalid pointer during FollowJointTrajectory execution (ros2_control, Kinova Gen3 + Robotiq) #3549

@rotematari

Description

@rotematari

Description

Description
move_group aborts with free(): invalid pointer immediately after a trajectory is accepted and handed to the joint_trajectory_controller. The stack trace points into libmoveit_simple_controller_manager.so while handling the FollowJointTrajectory action. Controllers are active and the arm actually moves; crash happens right after execution starts.

There are also recurring controller_manager “Overrun detected!” warnings (~1.00–1.08 ms loop times at 1000 Hz), and occasional timeouts on /controller_manager/list_controllers.

ros2_control: controller_manager at 1000 Hz

Controllers:

joint_trajectory_controller (arm)

position_controllers/GripperActionController (Robotiq; deprecation warning shown to use parallel_gripper_controllers/GripperActionController)

ROS Distro

Jazzy

OS and version

Ubuntu 24.04

Source or binary build?

Binary

If binary, which release version?

MoveIt 2.12.3

If source, which branch?

No response

Which RMW are you using?

CycloneDDS

Steps to Reproduce

i installed the ros2_kortex with kinova_gen3_7dof_robotiq_2f_85_moveit_config

and run
ros2 launch kinova_gen3_7dof_robotiq_2f_85_moveit_config robot.launch.py robot_ip:=192.168.1.10

then on the gui i plan & execute

the kinova gen3+ robotique gripper moved but the move_group node crashed

Expected behavior

the arm should move and get to its goal then then moveit should be ready for the next command

Actual behavior

the kinova gen3+ robotique gripper moved and got to the goal but the move_group node crashed

Backtrace or Console output

[rviz2-10] [INFO] [1754915530.603438630] [rviz2_moveit.moveit.ros.motion_planning_frame]: group manipulator
[rviz2-10] [INFO] [1754915530.603477063] [rviz2_moveit.moveit.ros.motion_planning_frame]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[rviz2-10] [INFO] [1754915530.606136029] [rviz2_moveit.moveit.ros.move_group_interface]: Ready to take commands for planning group manipulator.
[move_group-8] [INFO] [1754915533.418257969] [move_group.moveit.moveit.ros.move_group.move_action]: MoveGroupMoveAction: Received request
[move_group-8] [INFO] [1754915533.418460274] [move_group.moveit.moveit.ros.move_group.move_action]: executing..
[rviz2-10] [INFO] [1754915533.418554896] [rviz2_moveit.moveit.ros.move_group_interface]: Plan and Execute request accepted
[move_group-8] [INFO] [1754915533.419697583] [move_group.moveit.moveit.ros.move_group.move_action]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.
[move_group-8] [INFO] [1754915533.419778965] [move_group.moveit.moveit.ros.plan_execution]: Planning attempt 1 of at most 1
[move_group-8] [INFO] [1754915533.419807514] [move_group.moveit.moveit.ros.move_group.capability]: Using planning pipeline 'ompl'
[move_group-8] [INFO] [1754915533.419965936] [move_group]: Calling PlanningRequestAdapter 'ResolveConstraintFrames'
[move_group-8] [INFO] [1754915533.419984654] [move_group]: Calling PlanningRequestAdapter 'ValidateWorkspaceBounds'
[move_group-8] [INFO] [1754915533.419991679] [move_group]: Calling PlanningRequestAdapter 'CheckStartStateBounds'
[move_group-8] [INFO] [1754915533.420012693] [move_group]: Calling PlanningRequestAdapter 'CheckStartStateCollision'
[move_group-8] [INFO] [1754915533.420645595] [move_group.moveit.moveit.planners.ompl.model_based_planning_context]: Planner configuration 'manipulator' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[move_group-8] [INFO] [1754915533.420760443] [move_group]: Calling Planner 'OMPL'
[move_group-8] [INFO] [1754915533.434609875] [move_group]: Calling PlanningResponseAdapter 'AddTimeOptimalParameterization'
[move_group-8] [INFO] [1754915533.437564889] [move_group]: Calling PlanningResponseAdapter 'ValidateSolution'
[move_group-8] [INFO] [1754915533.438074596] [move_group]: Calling PlanningResponseAdapter 'DisplayMotionPath'
[move_group-8] [WARN] [1754915533.438153059] [move_group.moveit.moveit.ros.planning_pipeline]: The planner plugin did not fill out the 'planner_id' field of the MotionPlanResponse. Setting it to the planner ID name of the MotionPlanRequest assuming that the planner plugin does warn you if it does not use the requested planner.
[move_group-8] [INFO] [1754915533.438256925] [move_group.moveit.moveit.plugins.simple_controller_manager]: Returned 2 controllers in list
[move_group-8] [INFO] [1754915533.438269371] [move_group.moveit.moveit.plugins.simple_controller_manager]: Returned 2 controllers in list
[move_group-8] [INFO] [1754915533.438321318] [move_group.moveit.moveit.ros.trajectory_execution_manager]: Validating trajectory with allowed_start_tolerance 0.01
[move_group-8] [INFO] [1754915533.438566700] [move_group.moveit.moveit.ros.trajectory_execution_manager]: Starting trajectory execution ...
[move_group-8] [INFO] [1754915533.438597836] [move_group.moveit.moveit.plugins.simple_controller_manager]: Returned 2 controllers in list
[move_group-8] [INFO] [1754915533.438611405] [move_group.moveit.moveit.plugins.simple_controller_manager]: Returned 2 controllers in list
[move_group-8] [INFO] [1754915533.438732991] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: sending trajectory to joint_trajectory_controller
[ros2_control_node-1] [INFO] [1754915533.439105907] [joint_trajectory_controller]: Received new action goal
[ros2_control_node-1] [INFO] [1754915533.439140341] [joint_trajectory_controller]: Accepted new action goal
[move_group-8] [INFO] [1754915533.439215667] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: joint_trajectory_controller started execution
[move_group-8] [INFO] [1754915533.439226836] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: Goal request accepted!
[move_group-8] free(): invalid pointer
[move_group-8] Stack trace (most recent call last) in thread 271631:
[move_group-8] #15 Object "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2", at 0xffffffffffffffff, in
[move_group-8] #14 Source "../sysdeps/unix/sysv/linux/x86_64/clone3.S", line 78, in clone3 [0x75134bb29c3b]
[move_group-8] #13 Source "./nptl/pthread_create.c", line 447, in start_thread [0x75134ba9caa3]
[move_group-8] #12 Source "../../../../../src/libstdc++-v3/src/c++11/thread.cc", line 104, in execute_native_thread_routine [0x75134beecdb3]
[move_group-8] #11 Object "/opt/ros/jazzy/lib/librclcpp.so", at 0x75134c31a75b, in rclcpp::executors::SingleThreadedExecutor::spin()
[move_group-8] #10 Object "/opt/ros/jazzy/lib/librclcpp.so", at 0x75134c2f1fd3, in rclcpp::AnyExecutable::~AnyExecutable()
[move_group-8] #9 Object "/opt/ros/jazzy/lib/librclcpp.so", at 0x75134c2f1619, in
[move_group-8] #8 Object "/opt/ros/jazzy/lib/librclcpp_action.so", at 0x75134b17fba0, in
[move_group-8] #7 Object "/opt/ros/jazzy/lib/libmoveit_simple_controller_manager.so.2.12.3", at 0x75132d852f65, in
[move_group-8] #6 Source "./malloc/malloc.c", line 3398, in __libc_free [0x75134baaddad]
[move_group-8] #5 Source "./malloc/malloc.c", line 4507, in _int_free [0x75134baab38b]
[move_group-8] #4 Source "./malloc/malloc.c", line 5772, in malloc_printerr [0x75134baa8ff4]
[move_group-8] #3 Source "../sysdeps/posix/libc_fatal.c", line 134, in __libc_message_impl [0x75134ba297b5]
[move_group-8] #2 Source "./stdlib/abort.c", line 79, in abort [0x75134ba288fe]
[move_group-8] #1 Source "../sysdeps/posix/raise.c", line 26, in raise [0x75134ba4527d]
[move_group-8] #0 | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal
[move_group-8] | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation
[move_group-8] Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x75134ba9eb2c]
[move_group-8] Aborted (Signal sent by tkill() 271368 1001)
[move_group-8] corrupted size vs. prev_size
[ERROR] [move_group-8]: process has died [pid 271368, exit code -6, cmd '/opt/ros/jazzy/lib/moveit_ros_move_group/move_group --ros-args --params-file /tmp/launch_params_qcs8t9oo'].
[ros2_control_node-1] [WARN] [1754915535.846335921] [controller_manager]: Overrun detected! The controller manager missed its desired rate of 1000 Hz. The loop took 1.003059 ms (missed cycles : 2).
[ros2_control_node-1] [WARN] [1754915537.540373225] [controller_manager]: Overrun detected! The controller manager missed its desired rate of 1000 Hz. The loop took 1.040447 ms (missed cycles : 2).
[ros2_control_node-1] [INFO] [1754915540.849355437] [joint_trajectory_controller]: Goal reached, success!
[ros2_control_node-1] [WARN] [1754915549.622335245] [controller_manager]: Overrun detected! The controller manager missed its desired rate of 1000 Hz. The loop took 1.002391 ms (missed cycles : 2).
[ros2_control_node-1] [WARN] [1754915550.635357213] [controller_manager]: Overrun detected! The controller manager missed its desired rate of 1000 Hz. The loop took 1.024356 ms (missed cycles : 2).

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