-
Notifications
You must be signed in to change notification settings - Fork 117
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
Asan regression between Humble and Iron release #760
Comments
FYI @MiguelCompany and @EduPonz |
this seems that #761 could be related but this one happens with iron and humble, so can be another issue. CC: @Barry-Xu-2018 |
I try to reproduce this problem on my environment (docker image: osrf/ros:iron-desktop-full-jammy). If run
If run
Could you provide your complete log? |
I added the log to a gist here. We do set in our CI the ASAN_OPTIONS environment variable to avoid these spurious failures:
This should hopefully make the test run long enough that it will trigger the issue |
Yes. This is a known issue. (ros2/rclcpp#2220)
Thanks. I get the same error.
|
@luca-della-vedova @Barry-Xu-2018 since this is inside |
For #761, I found a bug in the Executor. It causes shared pointers to resources not to be released in time. Considering that the Jazzy version of the Executor has significant changes, I am uncertain whether the Iron version of the Executor has a similar issue. |
The issue is related to test For #0 rmw_fastrtps_shared_cpp::__rmw_publish (identifier=0x7fffe8c86192 "rmw_fastrtps_cpp", publisher=0x555556095420, ros_message=0x7fffffff5140, allocation=0x0)
at /root/ros2_iron_ws/src/ros2/rmw_fastrtps/rmw_fastrtps_shared_cpp/src/rmw_publish.cpp:62
#1 0x00007fffe8b953c6 in rmw_fastrtps_shared_cpp::__rmw_destroy_service (identifier=0x7fffe8c86192 "rmw_fastrtps_cpp", node=0x5555560aa5d0, service=0x555556211690)
at /root/ros2_iron_ws/src/ros2/rmw_fastrtps/rmw_fastrtps_shared_cpp/src/rmw_service.cpp:76
#2 0x00007fffe8c6e8d0 in rmw_destroy_service (node=0x5555560aa5d0, service=0x555556211690) at /root/ros2_iron_ws/src/ros2/rmw_fastrtps/rmw_fastrtps_cpp/src/rmw_service.cpp:506
#3 0x00007fffeb44dc1f in rmw_destroy_service (v2=0x5555560aa5d0, v1=0x555556211690) at /root/ros2_iron_ws/src/ros2/rmw_implementation/rmw_implementation/src/functions.cpp:523
#4 0x00007fffeeda0996 in rcl_service_fini (service=0x555555f452e8, node=0x555555f45200) at /root/ros2_iron_ws/src/ros2/rcl/rcl/src/rcl/service.c:260
#5 0x00007fffeed99af3 in rcl_node_type_description_service_fini (node=0x555555f45200) at /root/ros2_iron_ws/src/ros2/rcl/rcl/src/rcl/node.c:673
#6 0x00007fffefa15127 in rclcpp::node_interfaces::NodeTypeDescriptions::NodeTypeDescriptionsImpl::~NodeTypeDescriptionsImpl (this=0x5555561f6630, __in_chrg=<optimized out>)
at /root/ros2_iron_ws/src/ros2/rclcpp/rclcpp/src/rclcpp/node_interfaces/node_type_descriptions.cpp:132
#7 0x00007fffefa159f4 in std::default_delete<rclcpp::node_interfaces::NodeTypeDescriptions::NodeTypeDescriptionsImpl>::operator() (this=0x5555561dda18, __ptr=0x5555561f6630)
at /usr/include/c++/11/bits/unique_ptr.h:85
#8 0x00007fffefa156f0 in std::unique_ptr<rclcpp::node_interfaces::NodeTypeDescriptions::NodeTypeDescriptionsImpl, std::default_delete<rclcpp::node_interfaces::NodeTypeDescriptions::NodeTypeDescriptionsImpl> >::~unique_ptr (this=0x5555561dda18, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/unique_ptr.h:361
#9 0x00007fffefa10d12 in rclcpp::node_interfaces::NodeTypeDescriptions::~NodeTypeDescriptions (this=0x5555561dda10, __in_chrg=<optimized out>)
at /root/ros2_iron_ws/src/ros2/rclcpp/rclcpp/src/rclcpp/node_interfaces/node_type_descriptions.cpp:154
#10 0x00007fffef9b108f in __gnu_cxx::new_allocator<rclcpp::node_interfaces::NodeTypeDescriptions>::destroy<rclcpp::node_interfaces::NodeTypeDescriptions> (this=0x5555561dda10, __p=0x5555561dda10)
at /usr/include/c++/11/ext/new_allocator.h:168
#11 0x00007fffef9b1005 in std::allocator_traits<std::allocator<rclcpp::node_interfaces::NodeTypeDescriptions> >::destroy<rclcpp::node_interfaces::NodeTypeDescriptions> (__a=..., __p=0x5555561dda10)
at /usr/include/c++/11/bits/alloc_traits.h:535
#12 0x00007fffef9b09a5 in std::_Sp_counted_ptr_inplace<rclcpp::node_interfaces::NodeTypeDescriptions, std::allocator<rclcpp::node_interfaces::NodeTypeDescriptions>, (__gnu_cxx::_Lock_policy)2>::_M_dispose
(this=0x5555561dda00) at /usr/include/c++/11/bits/shared_ptr_base.h:528
#13 0x0000555555ad9495 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x5555561dda00) at /usr/include/c++/11/bits/shared_ptr_base.h:168
#14 0x0000555555ac8d7d in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x5555561f6538, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:705
#15 0x00007fffef9a5848 in std::__shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x5555561f6530, __in_chrg=<optimized out>)
at /usr/include/c++/11/bits/shared_ptr_base.h:1154
#16 0x00007fffef9a5892 in std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface>::~shared_ptr (this=0x5555561f6530, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr.h:122
#17 0x00007fffef9aee54 in std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >::~pair (this=0x5555561f6528, __in_chrg=<optimized out>)
at /usr/include/c++/11/bits/stl_pair.h:211
#18 0x00007fffef9aee78 in __gnu_cxx::new_allocator<std::__detail::_Hash_node<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, false> >::destroy<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> > > (this=0x7fffefdab100 <rclcpp::Node::backport_members_>, __p=0x5555561f6528)
at /usr/include/c++/11/ext/new_allocator.h:168
#19 0x00007fffef9adcaf in std::allocator_traits<std::allocator<std::__detail::_Hash_node<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, false> > >::destroy<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> > > (__a=..., __p=0x5555561f6528) at /usr/include/c++/11/bits/alloc_traits.h:535
#20 0x00007fffef9ac7fb in std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, false> > >::_M_deallocate_node (this=0x7fffefdab100 <rclcpp::Node::backport_members_>, __n=0x5555561f6520) at /usr/include/c++/11/bits/hashtable_policy.h:1894
#21 0x00007fffef9ab129 in std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, false> > >::_M_deallocate_nodes (this=0x7fffefdab100 <rclcpp::Node::backport_members_>, __n=0x0) at /usr/include/c++/11/bits/hashtable_policy.h:1916
#22 0x00007fffef9a95b2 in std::_Hashtable<rclcpp::Node const*, std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, std::allocator<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> > >, std::__detail::_Select1st, std::equal_to<rclcpp::Node const*>, std::hash<rclcpp::Node const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::clear (
this=0x7fffefdab100 <rclcpp::Node::backport_members_>) at /usr/include/c++/11/bits/hashtable.h:2320
#23 0x00007fffef9a6d70 in std::_Hashtable<rclcpp::Node const*, std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> >, std::allocator<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> > >, std::__detail::_Select1st, std::equal_to<rclcpp::Node const*>, std::hash<rclcpp::Node const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::~_Hashtable (
this=0x7fffefdab100 <rclcpp::Node::backport_members_>, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/hashtable.h:1532
--Type <RET> for more, q to quit, c to continue without paging--
#24 0x00007fffef9a53c8 in std::unordered_map<rclcpp::Node const*, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface>, std::hash<rclcpp::Node const*>, std::equal_to<rclcpp::Node const*>, std::allocator<std::pair<rclcpp::Node const* const, std::shared_ptr<rclcpp::node_interfaces::NodeTypeDescriptionsInterface> > > >::~unordered_map (this=0x7fffefdab100 <rclcpp::Node::backport_members_>,
__in_chrg=<optimized out>) at /usr/include/c++/11/bits/unordered_map.h:102
#25 0x00007fffef9a54e7 in rclcpp::Node::BackportMembers::~BackportMembers (this=0x7fffefdab100 <rclcpp::Node::backport_members_>, __in_chrg=<optimized out>)
at /root/ros2_iron_ws/src/ros2/rclcpp/rclcpp/src/rclcpp/node.cpp:132
#26 0x00007fffecd92a56 in __cxa_finalize (d=0x7fffefda9a80) at ./stdlib/cxa_finalize.c:83
#27 0x00007fffef8eec57 in __do_global_dtors_aux () from /root/ros2_iron_ws/install/rclcpp/lib/librclcpp.so
#28 0x00007fffffff8490 in ?? ()
#29 0x00007ffff7fc924e in _dl_fini () at ./elf/dl-fini.c:142 Node::BackportMembers is a static variable in rclcpp::Node. So it is destructed at __cxa_finalize. When the Node is destructed, it will call |
@Barry-Xu-2018 @luca-della-vedova Could you check if #770 fixes this? |
Thanks.
After checking, the below error message doesn't occur.
For test |
I think this issue is originally generated by ros2/rclcpp#2224. maybe ros2/rcl#1112, ros2/rclcpp#2344 and ros2/rclcpp#2351 could address the issue, but i am not 100% sure. since ros2/rcl#1112 requires API change, backport is not straight forward. @MiguelCompany i will try to take a look. |
That could be it. The error occurred while releasing service /test_Delivery/get_type_description. |
Is this still an issue in Jazzy? Thanks. |
@volleypaul i have not tried with jazzy but #770 is not merged yet. so i am almost sure the problem still stays. |
Bug report
Required Info:
Steps to reproduce issue
The regression happened in our automated CI. Specifically, looking at the result of this action, it is green on Humble, and fails on Iron.
To reproduce, either fork the rmf_ci_templates repo to run in a github action (note that we set the rmf to cyclonedds to circumvent this issue, this should be reverted) or reproduce locally by:
iron
branches https://github.com/open-rmf/rmf/tree/iron.colcon build --packages-up-to rmf_fleet_adapter --mixin asan-gcc lld
colcon test --packages-up-to rmf_fleet_adapter
.Expected behavior
CI succeeds on both iron and humble.
Actual behavior
CI fails on iron. I haven't tried but I suspect that building the same branches on
humble
would actually work.Additional information
The error reported by
asan
is reported in the PR but I'll paste it here in case it becomes unavailable:The text was updated successfully, but these errors were encountered: