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

Revert "Discriminate when the Client has gone from when the Client has not completely matched (#479)" #489

Merged
merged 1 commit into from
Nov 24, 2020

Conversation

sloretz
Copy link
Contributor

@sloretz sloretz commented Nov 23, 2020

This reverts commit c78c31a from #479 @jacobperron FYI

It appears to be the cause of Foxy CI with rmw_fastrtps_dynamic_cpp hanging. It causes the rclcpp composable node container to crash, and that causes a test in test_launch_ros to hang forever.

A more minimal example is:

$ export RMW_IMPLEMENTATION=rmw_fastrtps_dynamic_cpp
$ ./install/rclcpp_components/lib/rclcpp_components/component_container
$ export RMW_IMPLEMENTATION=rmw_fastrtps_dynamic_cpp
$ ros2 component list

When ros2 component list is called, the container segfaults.

Crash happens entirely in FastRTPS
#0  0x00007ffff6e9e4c4 in std::_Hashtable<eprosima::fastrtps::rtps::GUID_t, std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, std::allocator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t> >, std::__detail::_Select1st, std::equal_to<eprosima::fastrtps::rtps::GUID_t>, rmw_fastrtps_shared_cpp::hash_fastrtps_guid, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_find_before_node(unsigned long, eprosima::fastrtps::rtps::GUID_t const&, unsigned long) const () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#1  0x00007ffff6e9d91c in std::_Hashtable<eprosima::fastrtps::rtps::GUID_t, std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, std::allocator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t> >, std::__detail::_Select1st, std::equal_to<eprosima::fastrtps::rtps::GUID_t>, rmw_fastrtps_shared_cpp::hash_fastrtps_guid, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_find_node(unsigned long, eprosima::fastrtps::rtps::GUID_t const&, unsigned long) const () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#2  0x00007ffff6e9db88 in std::pair<std::__detail::_Node_iterator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, false, true>, bool> std::_Hashtable<eprosima::fastrtps::rtps::GUID_t, std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, std::allocator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t> >, std::__detail::_Select1st, std::equal_to<eprosima::fastrtps::rtps::GUID_t>, rmw_fastrtps_shared_cpp::hash_fastrtps_guid, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_emplace<eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&>(std::integral_constant<bool, true>, eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&) () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#3  0x00007ffff6e9d4de in std::pair<std::__detail::_Node_iterator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, false, true>, bool> std::_Hashtable<eprosima::fastrtps::rtps::GUID_t, std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, std::allocator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t> >, std::__detail::_Select1st, std::equal_to<eprosima::fastrtps::rtps::GUID_t>, rmw_fastrtps_shared_cpp::hash_fastrtps_guid, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::emplace<eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&>(eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&) () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#4  0x00007ffff6e9d0ea in std::pair<std::__detail::_Node_iterator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t>, false, true>, bool> std::unordered_map<eprosima::fastrtps::rtps::GUID_t, eprosima::fastrtps::rtps::GUID_t, rmw_fastrtps_shared_cpp::hash_fastrtps_guid, std::equal_to<eprosima::fastrtps::rtps::GUID_t>, std::allocator<std::pair<eprosima::fastrtps::rtps::GUID_t const, eprosima::fastrtps::rtps::GUID_t> > >::emplace<eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&>(eprosima::fastrtps::rtps::GUID_t const&, eprosima::fastrtps::rtps::GUID_t const&) () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#5  0x00007ffff6e9cac2 in ServiceListener::onNewDataMessage(eprosima::fastrtps::Subscriber*) () from /home/sloretz/install/rmw_fastrtps_dynamic_cpp/lib/librmw_fastrtps_dynamic_cpp.so
#6  0x00007ffff68068fa in eprosima::fastrtps::rtps::StatefulReader::NotifyChanges(eprosima::fastrtps::rtps::WriterProxy*) () from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#7  0x00007ffff6806b0c in eprosima::fastrtps::rtps::StatefulReader::change_received(eprosima::fastrtps::rtps::CacheChange_t*, eprosima::fastrtps::rtps::WriterProxy*) ()
   from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
--Type <RET> for more, q to quit, c to continue without paging--
#8  0x00007ffff6807c78 in eprosima::fastrtps::rtps::StatefulReader::processDataMsg(eprosima::fastrtps::rtps::CacheChange_t*) () from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#9  0x00007ffff6824cf6 in eprosima::fastrtps::rtps::MessageReceiver::proc_Submsg_Data(eprosima::fastrtps::rtps::CDRMessage_t*, eprosima::fastrtps::rtps::SubmessageHeader_t*) ()
   from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#10 0x00007ffff6829579 in eprosima::fastrtps::rtps::MessageReceiver::processCDRMsg(eprosima::fastrtps::rtps::Locator_t const&, eprosima::fastrtps::rtps::CDRMessage_t*) ()
   from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#11 0x00007ffff682bd16 in eprosima::fastrtps::rtps::ReceiverResource::OnDataReceived(unsigned char const*, unsigned int, eprosima::fastrtps::rtps::Locator_t const&, eprosima::fastrtps::rtps::Locator_t const&)
    () from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#12 0x00007ffff6ae8be7 in eprosima::fastdds::rtps::SharedMemChannelResource::perform_listen_operation(eprosima::fastrtps::rtps::Locator_t) () from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#13 0x00007ffff6ad8d8a in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (eprosima::fastdds::rtps::SharedMemChannelResource::*)(eprosima::fastrtps::rtps::Locator_t), eprosima::fastdds::rtps::SharedMemChannelResource*, eprosima::fastrtps::rtps::Locator_t> > >::_M_run() () from /home/sloretz/install/fastrtps/lib/libfastrtps.so.2
#14 0x00007ffff75c5d84 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#15 0x00007ffff7057609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#16 0x00007ffff7402293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

…s not completely matched (#479)"

This reverts commit c78c31a.

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
@sloretz sloretz added the bug Something isn't working label Nov 23, 2020
@sloretz sloretz self-assigned this Nov 23, 2020
@sloretz
Copy link
Contributor Author

sloretz commented Nov 23, 2020

CI (Foxy repos file, + rmw_fastrtps_dynamic_cpp build: --packages-up-to test_launch_ros rmw_fastrtps_cpp rmw_fastrtps_shared_cpp test: --packages-select test_launch_ros rmw_fastrtps_cpp rmw_fastrtps_shared_cpp)

  • Linux Build Status
  • Linux-aarch64 Build Status
  • macOS Build Status
  • Windows Build Status

@sloretz
Copy link
Contributor Author

sloretz commented Nov 24, 2020

CI LGTM. There are some windows warnings in rcl and rcutils, but those appear unrelated.

@sloretz sloretz merged commit 18483c2 into foxy Nov 24, 2020
@delete-merged-branch delete-merged-branch bot deleted the foxy_revert_479 branch November 24, 2020 17:06
jacobperron added a commit that referenced this pull request Dec 1, 2020
…lient has not completely matched (#479)" (#489)"

This reverts commit 18483c2.
jacobperron added a commit that referenced this pull request Dec 8, 2020
…not completely matched" (#490)

* Revert "Revert "Discriminate when the Client has gone from when the Client has not completely matched (#479)" (#489)"

This reverts commit 18483c2.

* Use PatchedServicePubListener in rmw_fastrtps_dynamic_cpp

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
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

Successfully merging this pull request may close these issues.

2 participants