Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example_14 is broken #542

Open
christophfroehlich opened this issue Jul 22, 2024 · 2 comments
Open

Example_14 is broken #542

christophfroehlich opened this issue Jul 22, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@christophfroehlich
Copy link
Contributor

$ ros2 launch ros2_control_demo_example_14 rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.launch.py
gives

[ros2_control_node-1] [WARN] [1721667354.774305495] [controller_manager.resource_manager]: Actuator hardware component 'RRBotModularJoint1' from plugin 'ros2_control_demo_example_14/RRBotActuatorWithoutFeedback' failed to initialize.
[ros2_control_node-1] terminate called without an active exception
[ros2_control_node-1] Stack trace (most recent call last) in thread 136275:
[ros2_control_node-1] [INFO] [1721667354.776150110] [RRBotSensorPositionFeedback]: Listening for connection on port 23287.
[ros2_control_node-1] [INFO] [1721667354.777724058] [RRBotSensorPositionFeedback]: Listening for connection on port 23286.
[ros2_control_node-1] #31   Source "/usr/include/c++/13/bits/invoke.h", line 96, in __invoke<rclcpp::AnySubscriptionCallback<std_msgs::msg::String_<std::allocator<void> >, std::allocator<void> >::dispatch<>(std::shared_ptr<std_msgs::msg::String_<std::allocator<void> > >, const rclcpp::MessageInfo&)::<lambda(auto:29&&)>, std::function<void(const std_msgs::msg::String_<std::allocator<void> >&)>&> [0x7fea54a8ca1b]
[ros2_control_node-1]          93:       using __result = __invoke_result<_Callable, _Args...>;
[ros2_control_node-1]          94:       using __type = typename __result::type;
[ros2_control_node-1]          95:       using __tag = typename __result::__invoke_type;
[ros2_control_node-1]       >  96:       return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
[ros2_control_node-1]          97:                                      std::forward<_Args>(__args)...);
[ros2_control_node-1]          98:     }
[ros2_control_node-1] #30   Source "/usr/include/c++/13/bits/invoke.h", line 61, in __invoke_impl<void, rclcpp::AnySubscriptionCallback<std_msgs::msg::String_<std::allocator<void> >, std::allocator<void> >::dispatch<>(std::shared_ptr<std_msgs::msg::String_<std::allocator<void> > >, const rclcpp::MessageInfo&)::<lambda(auto:29&&)>, std::function<void(const std_msgs::msg::String_<std::allocator<void> >&)>&> [0x7fea54a91a1e]
[ros2_control_node-1]          58:   template<typename _Res, typename _Fn, typename... _Args>
[ros2_control_node-1]          59:     constexpr _Res
[ros2_control_node-1]          60:     __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
[ros2_control_node-1]       >  61:     { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
[ros2_control_node-1]          62: 
[ros2_control_node-1]          63:   template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
[ros2_control_node-1]          64:     constexpr _Res
[ros2_control_node-1] #29   Source "/opt/ros/rolling/include/rclcpp/rclcpp/any_subscription_callback.hpp", line 521, in dispatch<> [0x7fea54a74db4]
[ros2_control_node-1]         518:         }
[ros2_control_node-1]         519:         // conditions for output is ros message
[ros2_control_node-1]         520:         else if constexpr (std::is_same_v<T, ConstRefROSMessageCallback>) {  // NOLINT
[ros2_control_node-1]       > 521:           callback(*message);
[ros2_control_node-1]         522:         } else if constexpr (std::is_same_v<T, ConstRefWithInfoROSMessageCallback>) {
[ros2_control_node-1]         523:           callback(*message, message_info);
[ros2_control_node-1]         524:         } else if constexpr (std::is_same_v<T, UniquePtrROSMessageCallback>) {
[ros2_control_node-1] #28   Source "/usr/include/c++/13/bits/std_function.h", line 591, in operator() [0x7fea54a7ff28]
[ros2_control_node-1]         588:       {
[ros2_control_node-1]         589:      if (_M_empty())
[ros2_control_node-1]         590:        __throw_bad_function_call();
[ros2_control_node-1]       > 591:      return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
[ros2_control_node-1]         592:       }
[ros2_control_node-1]         593: 
[ros2_control_node-1]         594: #if __cpp_rtti
[ros2_control_node-1] #27   Source "/usr/include/c++/13/bits/std_function.h", line 290, in _M_invoke [0x7fea549aad1c]
[ros2_control_node-1]         287:       static _Res
[ros2_control_node-1]         288:       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
[ros2_control_node-1]         289:       {
[ros2_control_node-1]       > 290:      return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor),
[ros2_control_node-1]         291:                                   std::forward<_ArgTypes>(__args)...);
[ros2_control_node-1]         292:       }
[ros2_control_node-1] #26   Source "/usr/include/c++/13/bits/invoke.h", line 111, in __invoke_r<void, std::_Bind<void (controller_manager::ControllerManager::*(controller_manager::ControllerManager*, std::_Placeholder<1>))(const std_msgs::msg::String_<std::allocator<void> >&)>&, const std_msgs::msg::String_<std::allocator<void> >&> [0x7fea549bb4b0]
[ros2_control_node-1]         108:       using __type = typename __result::type;
[ros2_control_node-1]         109:       using __tag = typename __result::__invoke_type;
[ros2_control_node-1]         110:       if constexpr (is_void_v<_Res>)
[ros2_control_node-1]       > 111:      std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
[ros2_control_node-1]         112:                                      std::forward<_Args>(__args)...);
[ros2_control_node-1]         113:       else
[ros2_control_node-1]         114:      return std::__invoke_impl<__type>(__tag{},
[ros2_control_node-1] #25   Source "/usr/include/c++/13/bits/invoke.h", line 61, in __invoke_impl<void, std::_Bind<void (controller_manager::ControllerManager::*(controller_manager::ControllerManager*, std::_Placeholder<1>))(const std_msgs::msg::String_<std::allocator<void> >&)>&, const std_msgs::msg::String_<std::allocator<void> >&> [0x7fea549d1194]
[ros2_control_node-1]          58:   template<typename _Res, typename _Fn, typename... _Args>
[ros2_control_node-1]          59:     constexpr _Res
[ros2_control_node-1]          60:     __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
[ros2_control_node-1]       >  61:     { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
[ros2_control_node-1]          62: 
[ros2_control_node-1]          63:   template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
[ros2_control_node-1]          64:     constexpr _Res
[ros2_control_node-1] #24   Source "/usr/include/c++/13/functional", line 591, in operator()<const std_msgs::msg::String_<std::allocator<void> >&> [0x7fea549e5f1d]
[ros2_control_node-1]         588:      _Result
[ros2_control_node-1]         589:      operator()(_Args&&... __args)
[ros2_control_node-1]         590:      {
[ros2_control_node-1]       > 591:        return this->__call<_Result>(
[ros2_control_node-1]         592:            std::forward_as_tuple(std::forward<_Args>(__args)...),
[ros2_control_node-1]         593:            _Bound_indexes());
[ros2_control_node-1]         594:      }
[ros2_control_node-1] #23   Source "/usr/include/c++/13/functional", line 506, in __call<void, const std_msgs::msg::String_<std::allocator<void> >&, 0, 1> [0x7fea549f7901]
[ros2_control_node-1]         503:      _Result
[ros2_control_node-1]         504:      __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
[ros2_control_node-1]         505:      {
[ros2_control_node-1]       > 506:        return std::__invoke(_M_f,
[ros2_control_node-1]         507:            _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)...
[ros2_control_node-1]         508:            );
[ros2_control_node-1]         509:      }
[ros2_control_node-1] #22   Source "/usr/include/c++/13/bits/invoke.h", line 96, in __invoke<void (controller_manager::ControllerManager::*&)(const std_msgs::msg::String_<std::allocator<void> >&), controller_manager::ControllerManager*&, const std_msgs::msg::String_<std::allocator<void> >&> [0x7fea54a03d3e]
[ros2_control_node-1]          93:       using __result = __invoke_result<_Callable, _Args...>;
[ros2_control_node-1]          94:       using __type = typename __result::type;
[ros2_control_node-1]          95:       using __tag = typename __result::__invoke_type;
[ros2_control_node-1]       >  96:       return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
[ros2_control_node-1]          97:                                      std::forward<_Args>(__args)...);
[ros2_control_node-1]          98:     }
[ros2_control_node-1] #21   Source "/usr/include/c++/13/bits/invoke.h", line 74, in __invoke_impl<void, void (controller_manager::ControllerManager::*&)(const std_msgs::msg::String_<std::allocator<void> >&), controller_manager::ControllerManager*&, const std_msgs::msg::String_<std::allocator<void> >&> [0x7fea54a10f12]
[ros2_control_node-1]          71:     __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t,
[ros2_control_node-1]          72:                _Args&&... __args)
[ros2_control_node-1]          73:     {
[ros2_control_node-1]       >  74:       return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
[ros2_control_node-1]          75:     }
[ros2_control_node-1]          76: 
[ros2_control_node-1]          77:   template<typename _Res, typename _MemPtr, typename _Tp>
[ros2_control_node-1] #20   Source "/workspaces/ros2_rolling_ws/src/ros2_control/controller_manager/src/controller_manager.cpp", line 293, in robot_description_callback [0x7fea54900988]
[ros2_control_node-1]         290:       "ResourceManager has already loaded a urdf. Ignoring attempt to reload a robot description.");
[ros2_control_node-1]         291:     return;
[ros2_control_node-1]         292:   }
[ros2_control_node-1]       > 293:   init_resource_manager(robot_description_);
[ros2_control_node-1]         294:   if (is_resource_manager_initialized())
[ros2_control_node-1]         295:   {
[ros2_control_node-1]         296:     RCLCPP_INFO(
[ros2_control_node-1] #19   Source "/workspaces/ros2_rolling_ws/src/ros2_control/controller_manager/src/controller_manager.cpp", line 306, in init_resource_manager [0x7fea5490153e]
[ros2_control_node-1]         304: void ControllerManager::init_resource_manager(const std::string & robot_description)
[ros2_control_node-1]         305: {
[ros2_control_node-1]       > 306:   if (!resource_manager_->load_and_initialize_components(robot_description, update_rate_))
[ros2_control_node-1]         307:   {
[ros2_control_node-1]         308:     RCLCPP_WARN(
[ros2_control_node-1]         309:       get_logger(),
[ros2_control_node-1] #18   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp", line 1133, in load_and_initialize_components [0x7fea538870fe]
[ros2_control_node-1]        1130:   else
[ros2_control_node-1]        1131:   {
[ros2_control_node-1]        1132:     std::scoped_lock guard(resource_interfaces_lock_, claimed_command_interfaces_lock_);
[ros2_control_node-1]       >1133:     resource_storage_->clear();
[ros2_control_node-1]        1134:     // cleanup everything
[ros2_control_node-1]        1135:     components_are_loaded_and_initialized_ = false;
[ros2_control_node-1]        1136:   }
[ros2_control_node-1] #17   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp", line 936, in clear [0x7fea53898dd3]
[ros2_control_node-1]         933:   void clear()
[ros2_control_node-1]         934:   {
[ros2_control_node-1]         935:     actuators_.clear();
[ros2_control_node-1]       > 936:     sensors_.clear();
[ros2_control_node-1]         937:     systems_.clear();
[ros2_control_node-1]         938: 
[ros2_control_node-1]         939:     async_actuators_.clear();
[ros2_control_node-1] #16   Source "/usr/include/c++/13/bits/stl_vector.h", line 1606, in clear [0x7fea538a5049]
[ros2_control_node-1]        1603:       _GLIBCXX20_CONSTEXPR
[ros2_control_node-1]        1604:       void
[ros2_control_node-1]        1605:       clear() _GLIBCXX_NOEXCEPT
[ros2_control_node-1]       >1606:       { _M_erase_at_end(this->_M_impl._M_start); }
[ros2_control_node-1]        1607: 
[ros2_control_node-1]        1608:     protected:
[ros2_control_node-1]        1609:       /**
[ros2_control_node-1] #15 | Source "/usr/include/c++/13/bits/stl_vector.h", line 1937, in _Destroy<hardware_interface::Sensor*, hardware_interface::Sensor>
[ros2_control_node-1]     |  1935:      if (size_type __n = this->_M_impl._M_finish - __pos)
[ros2_control_node-1]     |  1936:        {
[ros2_control_node-1]     | >1937:          std::_Destroy(__pos, this->_M_impl._M_finish,
[ros2_control_node-1]     |  1938:                        _M_get_Tp_allocator());
[ros2_control_node-1]     |  1939:          this->_M_impl._M_finish = __pos;
[ros2_control_node-1]       Source "/usr/include/c++/13/bits/alloc_traits.h", line 948, in _M_erase_at_end [0x7fea538b1c99]
[ros2_control_node-1]         945:     _Destroy(_ForwardIterator __first, _ForwardIterator __last,
[ros2_control_node-1]         946:           allocator<_Tp>&)
[ros2_control_node-1]         947:     {
[ros2_control_node-1]       > 948:       std::_Destroy(__first, __last);
[ros2_control_node-1]         949:     }
[ros2_control_node-1]         950: #endif
[ros2_control_node-1]         951:   /// @endcond
[ros2_control_node-1] #14   Source "/usr/include/c++/13/bits/stl_construct.h", line 196, in _Destroy<hardware_interface::Sensor*> [0x7fea538c1724]
[ros2_control_node-1]         193:      return std::_Destroy_aux<false>::__destroy(__first, __last);
[ros2_control_node-1]         194: #endif
[ros2_control_node-1]         195:       std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
[ros2_control_node-1]       > 196:      __destroy(__first, __last);
[ros2_control_node-1]         197:     }
[ros2_control_node-1]         198: 
[ros2_control_node-1]         199:   template<bool>
[ros2_control_node-1] #13   Source "/usr/include/c++/13/bits/stl_construct.h", line 163, in __destroy<hardware_interface::Sensor*> [0x7fea538c9406]
[ros2_control_node-1]         160:      __destroy(_ForwardIterator __first, _ForwardIterator __last)
[ros2_control_node-1]         161:      {
[ros2_control_node-1]         162:        for (; __first != __last; ++__first)
[ros2_control_node-1]       > 163:          std::_Destroy(std::__addressof(*__first));
[ros2_control_node-1]         164:      }
[ros2_control_node-1]         165:     };
[ros2_control_node-1] #12   Source "/usr/include/c++/13/bits/stl_construct.h", line 151, in _Destroy<hardware_interface::Sensor> [0x7fea538d4034]
[ros2_control_node-1]         148: #if __cplusplus > 201703L
[ros2_control_node-1]         149:       std::destroy_at(__pointer);
[ros2_control_node-1]         150: #else
[ros2_control_node-1]       > 151:       __pointer->~_Tp();
[ros2_control_node-1]         152: #endif
[ros2_control_node-1]         153:     }
[ros2_control_node-1] #11   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/include/hardware_interface/sensor.hpp", line 47, in ~Sensor [0x7fea53898893]
[ros2_control_node-1]          45:   Sensor(Sensor && other) = default;
[ros2_control_node-1]          46: 
[ros2_control_node-1]       >  47:   ~Sensor() = default;
[ros2_control_node-1]          48: 
[ros2_control_node-1]          49:   HARDWARE_INTERFACE_PUBLIC
[ros2_control_node-1]          50:   const rclcpp_lifecycle::State & initialize(
[ros2_control_node-1] #10   Source "/usr/include/c++/13/bits/unique_ptr.h", line 404, in ~unique_ptr [0x7fea538a4cd1]
[ros2_control_node-1]         401:                    "unique_ptr's deleter must be invocable with a pointer");
[ros2_control_node-1]         402:      auto& __ptr = _M_t._M_ptr();
[ros2_control_node-1]         403:      if (__ptr != nullptr)
[ros2_control_node-1]       > 404:        get_deleter()(std::move(__ptr));
[ros2_control_node-1]         405:      __ptr = pointer();
[ros2_control_node-1]         406:       }
[ros2_control_node-1] #9    Source "/usr/include/c++/13/bits/unique_ptr.h", line 99, in operator() [0x7fea538b1669]
[ros2_control_node-1]          96:                    "can't delete pointer to incomplete type");
[ros2_control_node-1]          97:      static_assert(sizeof(_Tp)>0,
[ros2_control_node-1]          98:                    "can't delete pointer to incomplete type");
[ros2_control_node-1]       >  99:      delete __ptr;
[ros2_control_node-1]         100:       }
[ros2_control_node-1]         101:     };
[ros2_control_node-1] #8    Source "/workspaces/ros2_rolling_ws/src/ros2_control_demos/example_14/hardware/include/ros2_control_demo_example_14/rrbot_sensor_for_position_feedback.hpp", line 42, in ~RRBotSensorPositionFeedback [0x7fea485203bf]
[ros2_control_node-1]          40: namespace ros2_control_demo_example_14
[ros2_control_node-1]          41: {
[ros2_control_node-1]       >  42: class RRBotSensorPositionFeedback : public hardware_interface::SensorInterface
[ros2_control_node-1]          43: {
[ros2_control_node-1]          44: public:
[ros2_control_node-1]          45:   RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSensorPositionFeedback);
[ros2_control_node-1] #7    Source "/workspaces/ros2_rolling_ws/src/ros2_control_demos/example_14/hardware/include/ros2_control_demo_example_14/rrbot_sensor_for_position_feedback.hpp", line 42, in ~RRBotSensorPositionFeedback [0x7fea4852034b]
[ros2_control_node-1]          40: namespace ros2_control_demo_example_14
[ros2_control_node-1]          41: {
[ros2_control_node-1]       >  42: class RRBotSensorPositionFeedback : public hardware_interface::SensorInterface
[ros2_control_node-1]          43: {
[ros2_control_node-1]          44: public:
[ros2_control_node-1]          45:   RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSensorPositionFeedback);
[ros2_control_node-1] #6  | Source "/usr/include/c++/13/bits/std_thread.h", line 173, in __terminate
[ros2_control_node-1]     |   171:     {
[ros2_control_node-1]     |   172:       if (joinable())
[ros2_control_node-1]     | > 173:      std::__terminate();
[ros2_control_node-1]     |   174:     }
[ros2_control_node-1]       Source "/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h", line 322, in ~thread [0x560004abe1f6]
[ros2_control_node-1]         319:   inline void __terminate() _GLIBCXX_USE_NOEXCEPT
[ros2_control_node-1]         320:   {
[ros2_control_node-1]         321:     void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__));
[ros2_control_node-1]       > 322:     terminate();
[ros2_control_node-1]         323:   }
[ros2_control_node-1]         324: #pragma GCC visibility pop
[ros2_control_node-1]         325: }
[ros2_control_node-1] #5    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7fea53e01a48, in std::terminate()
[ros2_control_node-1] #4    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7fea53e16e9b, in 
[ros2_control_node-1] #3    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7fea53e01ffd, in 
[ros2_control_node-1] #2    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7fea53b458fe, in abort
[ros2_control_node-1] #1    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7fea53b6226d, in raise
[ros2_control_node-1] #0    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7fea53bbbb1c, in pthread_kill
[ros2_control_node-1] Aborted (Signal sent by tkill() 136241 1001)
[ERROR] [ros2_control_node-1]: process has died [pid 136241, exit code -6, cmd '/workspaces/ros2_rolling_ws/install/controller_manager/lib/controller_manager/ros2_control_node --ros-args --params-file /workspaces/ros2_rolling_ws/install/ros2_control_demo_example_14/share/ros2_control_demo_example_14/config/rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.yaml'].
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_state_publisher-2] [INFO] [1721667356.779936554] [rclcpp]: signal_handler(signum=2)
[spawner-3] Traceback (most recent call last):
[spawner-3]   File "/workspaces/ros2_rolling_ws/install/controller_manager/lib/controller_manager/spawner", line 33, in <module>
[spawner-3]     sys.exit(load_entry_point('controller-manager==4.13.0', 'console_scripts', 'spawner')())
[spawner-3]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[spawner-3]   File "/workspaces/ros2_rolling_ws/install/controller_manager/lib/python3.12/site-packages/controller_manager/spawner.py", line 251, in main
[spawner-3]     if not wait_for_controller_manager(
[spawner-3]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[spawner-3]   File "/workspaces/ros2_rolling_ws/install/controller_manager/lib/python3.12/site-packages/controller_manager/spawner.py", line 123, in wait_for_controller_manager
[spawner-3]     return wait_for_value_or(
[spawner-3]            ^^^^^^^^^^^^^^^^^^
[spawner-3]   File "/workspaces/ros2_rolling_ws/install/controller_manager/lib/python3.12/site-packages/controller_manager/spawner.py", line 72, in wait_for_value_or
[spawner-3]     time.sleep(0.2)

Environment:

  • OS: noble
  • Version rolling
@christophfroehlich christophfroehlich added the bug Something isn't working label Jul 22, 2024
@christophfroehlich
Copy link
Contributor Author

It works with humble+jammy, but not with rolling on jammy or noble.

@christophfroehlich
Copy link
Contributor Author

I was not able to reproduce it any more.

But the termination of the program seems to be faulty in the CI.

3: [INFO] [robot_state_publisher-2]: sending signal 'SIGINT' to process[robot_state_publisher-2]
3: [INFO] [ros2_control_node-1]: sending signal 'SIGINT' to process[ros2_control_node-1]
3: [robot_state_publisher-2] [INFO] [1722025338.199935298] [rclcpp]: signal_handler(signum=2)
3: [ros2_control_node-1] [INFO] [1722025338.200264847] [rclcpp]: signal_handler(signum=2)
3: [ros2_control_node-1] [ERROR] [1722025338.270089265] [joint_state_broadcaster]: Unable to start transition 7 from current state shuttingdown: Could not publish transition: publisher's context is invalid, at ./src/rcl/publisher.c:423, at ./src/rcl_lifecycle.c:368
3: [ros2_control_node-1] [WARN] [1722025338.270111273] [rclcpp_lifecycle]: Shutdown error in destruction of LifecycleNode: final state(active)
3: [ros2_control_node-1] [ERROR] [1722025338.270519875] [forward_velocity_controller]: Unable to start transition 7 from current state shuttingdown: Could not publish transition: publisher's context is invalid, at ./src/rcl/publisher.c:423, at ./src/rcl_lifecycle.c:368
3: [ros2_control_node-1] [WARN] [1722025338.270526578] [rclcpp_lifecycle]: Shutdown error in destruction of LifecycleNode: final state(active)
3: [ros2_control_node-1] terminate called without an active exception
3: [ros2_control_node-1] Stack trace (most recent call last):
3: [ros2_control_node-1] #31   Source "/usr/include/c++/13/bits/shared_ptr.h", line 175, in ~shared_ptr [0x561d1ef4bc0f]
3: [ros2_control_node-1]         172:    * pointer see `std::shared_ptr::owner_before` and `std::owner_less`.
3: [ros2_control_node-1]         173:   */
3: [ros2_control_node-1]         174:   template<typename _Tp>
3: [ros2_control_node-1]       > 175:     class shared_ptr : public __shared_ptr<_Tp>
3: [ros2_control_node-1]         176:     {
3: [ros2_control_node-1]         177:       template<typename... _Args>
3: [ros2_control_node-1]         178: 	using _Constructible = typename enable_if<
3: [ros2_control_node-1] #30   Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 1524, in ~__shared_ptr [0x561d1ef4bbef]
3: [ros2_control_node-1]        1522:       __shared_ptr(const __shared_ptr&) noexcept = default;
3: [ros2_control_node-1]        1523:       __shared_ptr& operator=(const __shared_ptr&) noexcept = default;
3: [ros2_control_node-1]       >1524:       ~__shared_ptr() = default;
3: [ros2_control_node-1]        1525: 
3: [ros2_control_node-1]        1526:       template<typename _Yp, typename = _Compatible<_Yp>>
3: [ros2_control_node-1]        1527: 	__shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
3: [ros2_control_node-1] #29   Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 1071, in ~__shared_count [0x561d1ef4bf98]
3: [ros2_control_node-1]        1068:       ~__shared_count() noexcept
3: [ros2_control_node-1]        1069:       {
3: [ros2_control_node-1]        1070: 	if (_M_pi != nullptr)
3: [ros2_control_node-1]       >1071: 	  _M_pi->_M_release();
3: [ros2_control_node-1]        1072:       }
3: [ros2_control_node-1]        1073: 
3: [ros2_control_node-1]        1074:       __shared_count(const __shared_count& __r) noexcept
3: [ros2_control_node-1] #28   Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 353, in _M_release [0x561d1ef4b160]
3: [ros2_control_node-1]         350: 	  if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1)
3: [ros2_control_node-1]         351: 	    [[__unlikely__]]
3: [ros2_control_node-1]         352: 	    {
3: [ros2_control_node-1]       > 353: 	      _M_release_last_use_cold();
3: [ros2_control_node-1]         354: 	      return;
3: [ros2_control_node-1]         355: 	    }
3: [ros2_control_node-1]         356: 	}
3: [ros2_control_node-1] #27   Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 199, in _M_release_last_use_cold [0x561d1ef4bd7f]
3: [ros2_control_node-1]         196:       __attribute__((__noinline__))
3: [ros2_control_node-1]         197:       void
3: [ros2_control_node-1]         198:       _M_release_last_use_cold() noexcept
3: [ros2_control_node-1]       > 199:       { _M_release_last_use(); }
3: [ros2_control_node-1]         200: 
3: [ros2_control_node-1]         201:       // Increment the weak count.
3: [ros2_control_node-1]         202:       void
3: [ros2_control_node-1] #26   Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 175, in _M_release_last_use [0x561d1ef4c890]
3: [ros2_control_node-1]         172:       _M_release_last_use() noexcept
3: [ros2_control_node-1]         173:       {
3: [ros2_control_node-1]         174: 	_GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count);
3: [ros2_control_node-1]       > 175: 	_M_dispose();
3: [ros2_control_node-1]         176: 	// There must be a memory barrier between dispose() and destroy()
3: [ros2_control_node-1]         177: 	// to ensure that the effects of dispose() are observed in the
3: [ros2_control_node-1]         178: 	// thread that runs destroy().
3: [ros2_control_node-1] #25 | Source "/usr/include/c++/13/bits/shared_ptr_base.h", line 613, in destroy<controller_manager::ControllerManager>
3: [ros2_control_node-1]     |   611:       _M_dispose() noexcept
3: [ros2_control_node-1]     |   612:       {
3: [ros2_control_node-1]     | > 613: 	allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
3: [ros2_control_node-1]     |   614:       }
3: [ros2_control_node-1]       Source "/usr/include/c++/13/bits/alloc_traits.h", line 675, in _M_dispose [0x561d1ef4ef77]
3: [ros2_control_node-1]         672: 	static _GLIBCXX20_CONSTEXPR void
3: [ros2_control_node-1]         673: 	destroy(allocator_type&, _Up* __p)
3: [ros2_control_node-1]         674: 	noexcept(is_nothrow_destructible<_Up>::value)
3: [ros2_control_node-1]       > 675: 	{ std::_Destroy(__p); }
3: [ros2_control_node-1]         676: 
3: [ros2_control_node-1]         677:       /// max_size is ill-formed for allocator<void>
3: [ros2_control_node-1]         678:       static size_type
3: [ros2_control_node-1] #24   Source "/usr/include/c++/13/bits/stl_construct.h", line 151, in _Destroy<controller_manager::ControllerManager> [0x561d1ef4f286]
3: [ros2_control_node-1]         148: #if __cplusplus > 201703L
3: [ros2_control_node-1]         149:       std::destroy_at(__pointer);
3: [ros2_control_node-1]         150: #else
3: [ros2_control_node-1]       > 151:       __pointer->~_Tp();
3: [ros2_control_node-1]         152: #endif
3: [ros2_control_node-1]         153:     }
3: [INFO] [robot_state_publisher-2]: process has finished cleanly [pid 217606]
3: [ros2_control_node-1] #23   Source "/workspaces/ros2_rolling_ws/src/ros2_control/controller_manager/include/controller_manager/controller_manager.hpp", line 87, in ~ControllerManager [0x7f91bfbc8e03]
3: [ros2_control_node-1]          84:     const rclcpp::NodeOptions & options = get_cm_node_options());
3: [ros2_control_node-1]          85: 
3: [ros2_control_node-1]          86:   CONTROLLER_MANAGER_PUBLIC
3: [ros2_control_node-1]       >  87:   virtual ~ControllerManager() = default;
3: [ros2_control_node-1]          88: 
3: [ros2_control_node-1]          89:   CONTROLLER_MANAGER_PUBLIC
3: [ros2_control_node-1]          90:   void robot_description_callback(const std_msgs::msg::String & msg);
3: [ros2_control_node-1] #22   Source "/usr/include/c++/13/bits/unique_ptr.h", line 404, in ~unique_ptr [0x7f91bfaa25d3]
3: [ros2_control_node-1]         401: 		      "unique_ptr's deleter must be invocable with a pointer");
3: [ros2_control_node-1]         402: 	auto& __ptr = _M_t._M_ptr();
3: [ros2_control_node-1]         403: 	if (__ptr != nullptr)
3: [ros2_control_node-1]       > 404: 	  get_deleter()(std::move(__ptr));
3: [ros2_control_node-1]         405: 	__ptr = pointer();
3: [ros2_control_node-1]         406:       }
3: [ros2_control_node-1] #21   Source "/usr/include/c++/13/bits/unique_ptr.h", line 99, in operator() [0x7f91bfab2c45]
3: [ros2_control_node-1]          96: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]          97: 	static_assert(sizeof(_Tp)>0,
3: [ros2_control_node-1]          98: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]       >  99: 	delete __ptr;
3: [ros2_control_node-1]         100:       }
3: [ros2_control_node-1]         101:     };
3: [ros2_control_node-1] #20   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp", line 1043, in ~ResourceManager [0x7f91be9ed661]
3: [ros2_control_node-1]        1040: {
3: [ros2_control_node-1]        1041: }
3: [ros2_control_node-1]        1042: 
3: [ros2_control_node-1]       >1043: ResourceManager::~ResourceManager() = default;
3: [ros2_control_node-1]        1044: 
3: [ros2_control_node-1]        1045: ResourceManager::ResourceManager(
3: [ros2_control_node-1]        1046:   const std::string & urdf, rclcpp::node_interfaces::NodeClockInterface::SharedPtr clock_interface,
3: [ros2_control_node-1] #19   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp", line 1043, in ~ResourceManager [0x7f91be9ed62f]
3: [ros2_control_node-1]        1040: {
3: [ros2_control_node-1]        1041: }
3: [ros2_control_node-1]        1042: 
3: [ros2_control_node-1]       >1043: ResourceManager::~ResourceManager() = default;
3: [ros2_control_node-1]        1044: 
3: [ros2_control_node-1]        1045: ResourceManager::ResourceManager(
3: [ros2_control_node-1]        1046:   const std::string & urdf, rclcpp::node_interfaces::NodeClockInterface::SharedPtr clock_interface,
3: [ros2_control_node-1] #18   Source "/usr/include/c++/13/bits/unique_ptr.h", line 404, in ~unique_ptr [0x7f91bea0c30d]
3: [ros2_control_node-1]         401: 		      "unique_ptr's deleter must be invocable with a pointer");
3: [ros2_control_node-1]         402: 	auto& __ptr = _M_t._M_ptr();
3: [ros2_control_node-1]         403: 	if (__ptr != nullptr)
3: [ros2_control_node-1]       > 404: 	  get_deleter()(std::move(__ptr));
3: [ros2_control_node-1]         405: 	__ptr = pointer();
3: [ros2_control_node-1]         406:       }
3: [ros2_control_node-1] #17   Source "/usr/include/c++/13/bits/unique_ptr.h", line 99, in operator() [0x7f91bea190c7]
3: [ros2_control_node-1]          96: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]          97: 	static_assert(sizeof(_Tp)>0,
3: [ros2_control_node-1]          98: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]       >  99: 	delete __ptr;
3: [ros2_control_node-1]         100:       }
3: [ros2_control_node-1]         101:     };
3: [ros2_control_node-1] #16   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp", line 90, in ~ResourceStorage [0x7f91bea19025]
3: [ros2_control_node-1]          87:   return ss.str();
3: [ros2_control_node-1]          88: };
3: [ros2_control_node-1]          89: 
3: [ros2_control_node-1]       >  90: class ResourceStorage
3: [ros2_control_node-1]          91: {
3: [ros2_control_node-1]          92:   static constexpr const char * pkg_name = "hardware_interface";
3: [ros2_control_node-1] #15 | Source "/usr/include/c++/13/bits/stl_vector.h", line 735, in _Destroy<hardware_interface::Sensor*, hardware_interface::Sensor>
3: [ros2_control_node-1]     |   733:       ~vector() _GLIBCXX_NOEXCEPT
3: [ros2_control_node-1]     |   734:       {
3: [ros2_control_node-1]     | > 735: 	std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
3: [ros2_control_node-1]     |   736: 		      _M_get_Tp_allocator());
3: [ros2_control_node-1]     |   737: 	_GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC;
3: [ros2_control_node-1]       Source "/usr/include/c++/13/bits/alloc_traits.h", line 948, in ~vector [0x7f91bea03dc1]
3: [ros2_control_node-1]         945:     _Destroy(_ForwardIterator __first, _ForwardIterator __last,
3: [ros2_control_node-1]         946: 	     allocator<_Tp>&)
3: [ros2_control_node-1]         947:     {
3: [ros2_control_node-1]       > 948:       std::_Destroy(__first, __last);
3: [ros2_control_node-1]         949:     }
3: [ros2_control_node-1]         950: #endif
3: [ros2_control_node-1]         951:   /// @endcond
3: [ros2_control_node-1] #14   Source "/usr/include/c++/13/bits/stl_construct.h", line 196, in _Destroy<hardware_interface::Sensor*> [0x7f91bea28724]
3: [ros2_control_node-1]         193: 	return std::_Destroy_aux<false>::__destroy(__first, __last);
3: [ros2_control_node-1]         194: #endif
3: [ros2_control_node-1]         195:       std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
3: [ros2_control_node-1]       > 196: 	__destroy(__first, __last);
3: [ros2_control_node-1]         197:     }
3: [ros2_control_node-1]         198: 
3: [ros2_control_node-1]         199:   template<bool>
3: [ros2_control_node-1] #13   Source "/usr/include/c++/13/bits/stl_construct.h", line 163, in __destroy<hardware_interface::Sensor*> [0x7f91bea30406]
3: [ros2_control_node-1]         160: 	__destroy(_ForwardIterator __first, _ForwardIterator __last)
3: [ros2_control_node-1]         161: 	{
3: [ros2_control_node-1]         162: 	  for (; __first != __last; ++__first)
3: [ros2_control_node-1]       > 163: 	    std::_Destroy(std::__addressof(*__first));
3: [ros2_control_node-1]         164: 	}
3: [ros2_control_node-1]         165:     };
3: [ros2_control_node-1] #12   Source "/usr/include/c++/13/bits/stl_construct.h", line 151, in _Destroy<hardware_interface::Sensor> [0x7f91bea3b034]
3: [ros2_control_node-1]         148: #if __cplusplus > 201703L
3: [ros2_control_node-1]         149:       std::destroy_at(__pointer);
3: [ros2_control_node-1]         150: #else
3: [ros2_control_node-1]       > 151:       __pointer->~_Tp();
3: [ros2_control_node-1]         152: #endif
3: [ros2_control_node-1]         153:     }
3: [ros2_control_node-1] #11   Source "/workspaces/ros2_rolling_ws/src/ros2_control/hardware_interface/include/hardware_interface/sensor.hpp", line 47, in ~Sensor [0x7f91be9ff893]
3: [ros2_control_node-1]          45:   Sensor(Sensor && other) = default;
3: [ros2_control_node-1]          46: 
3: [ros2_control_node-1]       >  47:   ~Sensor() = default;
3: [ros2_control_node-1]          48: 
3: [ros2_control_node-1]          49:   HARDWARE_INTERFACE_PUBLIC
3: [ros2_control_node-1]          50:   const rclcpp_lifecycle::State & initialize(
3: [ros2_control_node-1] #10   Source "/usr/include/c++/13/bits/unique_ptr.h", line 404, in ~unique_ptr [0x7f91bea0bcd1]
3: [ros2_control_node-1]         401: 		      "unique_ptr's deleter must be invocable with a pointer");
3: [ros2_control_node-1]         402: 	auto& __ptr = _M_t._M_ptr();
3: [ros2_control_node-1]         403: 	if (__ptr != nullptr)
3: [ros2_control_node-1]       > 404: 	  get_deleter()(std::move(__ptr));
3: [ros2_control_node-1]         405: 	__ptr = pointer();
3: [ros2_control_node-1]         406:       }
3: [ros2_control_node-1] #9    Source "/usr/include/c++/13/bits/unique_ptr.h", line 99, in operator() [0x7f91bea18669]
3: [ros2_control_node-1]          96: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]          97: 	static_assert(sizeof(_Tp)>0,
3: [ros2_control_node-1]          98: 		      "can't delete pointer to incomplete type");
3: [ros2_control_node-1]       >  99: 	delete __ptr;
3: [ros2_control_node-1]         100:       }
3: [ros2_control_node-1]         101:     };
3: [ros2_control_node-1] #8    Source "/workspaces/ros2_rolling_ws/src/ros2_control_demos/example_14/hardware/include/ros2_control_demo_example_14/rrbot_sensor_for_position_feedback.hpp", line 42, in ~RRBotSensorPositionFeedback [0x7f91b46023bf]
3: [ros2_control_node-1]          39: namespace ros2_control_demo_example_14
3: [ros2_control_node-1]          40: {
3: [ros2_control_node-1]          41: class RRBotSensorPositionFeedback : public hardware_interface::SensorInterface
3: [ros2_control_node-1]       >  42: {
3: [ros2_control_node-1]          43: public:
3: [ros2_control_node-1]          44:   RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSensorPositionFeedback);
3: [ros2_control_node-1] #7    Source "/workspaces/ros2_rolling_ws/src/ros2_control_demos/example_14/hardware/include/ros2_control_demo_example_14/rrbot_sensor_for_position_feedback.hpp", line 42, in ~RRBotSensorPositionFeedback [0x7f91b460234b]
3: [ros2_control_node-1]          39: namespace ros2_control_demo_example_14
3: [ros2_control_node-1]          40: {
3: [ros2_control_node-1]          41: class RRBotSensorPositionFeedback : public hardware_interface::SensorInterface
3: [ros2_control_node-1]       >  42: {
3: [ros2_control_node-1]          43: public:
3: [ros2_control_node-1]          44:   RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSensorPositionFeedback);
3: [ros2_control_node-1] #6  | Source "/usr/include/c++/13/bits/std_thread.h", line 173, in __terminate
3: [ros2_control_node-1]     |   171:     {
3: [ros2_control_node-1]     |   172:       if (joinable())
3: [ros2_control_node-1]     | > 173: 	std::__terminate();
3: [ros2_control_node-1]     |   174:     }
3: [ros2_control_node-1]       Source "/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h", line 322, in ~thread [0x561d1ef4b1f6]
3: [ros2_control_node-1]         319:   inline void __terminate() _GLIBCXX_USE_NOEXCEPT
3: [ros2_control_node-1]         320:   {
3: [ros2_control_node-1]         321:     void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__));
3: [ros2_control_node-1]       > 322:     terminate();
3: [ros2_control_node-1]         323:   }
3: [ros2_control_node-1]         324: #pragma GCC visibility pop
3: [ros2_control_node-1]         325: }
3: [ros2_control_node-1] #5    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7f91bef68a48, in std::terminate()
3: [ros2_control_node-1] #4    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7f91bef7de9b, in 
3: [ros2_control_node-1] #3    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33", at 0x7f91bef68ffd, in 
3: [ros2_control_node-1] #2    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f91becac8fe, in abort
3: [ros2_control_node-1] #1    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f91becc926d, in raise
3: [ros2_control_node-1] #0    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f91bed22b1c, in pthread_kill
3: [ros2_control_node-1] Aborted (Signal sent by tkill() 217594 1001)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant