-
Notifications
You must be signed in to change notification settings - Fork 0
New windows debug exceptions #19
Comments
I don't see how the changes in ros2/rmw#95 could have caused these failures. I'll spin up a Windows VM to check why it these tests are failing though. |
Getting it running in Visual Studio, this is what I get (
This is the call stack:
I don't see anything in that call stack that would have been affected by my changes. The only thing I could imagine is that the I guess we're dealing with heap overwrite, but according to this page it is usually Debug -> Release where these issues start popping up: Maybe we were just getting lucky in Release and in Debug we're finding the issues. I don't know where to go from here, but I guess setting up watch points for memory and checking the memory state as you walk through the executable. I don't have time to do that right now. I also audited my code changes and I flagged these spots as potentially dangerous, but I couldn't find that any of them were the root cause:
|
Lots of new failures on windows debug nightlies as of 8 April.
Impacted tests
This is the list of new failures (there are many other failures on these jobs for other reasons)
projectroot.gtest_client_wait_for_service_shutdown__rmw_fastrtps_cpp
projectroot.gtest_executor__rmw_fastrtps_cpp
projectroot.gtest_intra_process__rmw_fastrtps_cpp
projectroot.gtest_local_parameters__rmw_fastrtps_cpp
projectroot.gtest_multiple_service_calls__rmw_fastrtps_cpp
projectroot.gtest_multithreaded__rmw_fastrtps_cpp
projectroot.gtest_publisher__rmw_fastrtps_cpp
projectroot.gtest_repeated_publisher_subscriber__rmw_fastrtps_cpp
projectroot.gtest_services_in_constructor__rmw_fastrtps_cpp
projectroot.gtest_spin__rmw_fastrtps_cpp
projectroot.gtest_subscription__rmw_fastrtps_cpp
projectroot.gtest_timeout_subscriber__rmw_fastrtps_cpp
projectroot.gtest_timer__rmw_fastrtps_cpp
projectroot.test_callback_exceptions
projectroot.test_client__rmw_fastrtps_cpp
projectroot.test_composition__rmw_fastrtps_cpp
projectroot.test_default_state_machine
projectroot.test_externally_defined_services
projectroot.test_find_weak_nodes
projectroot.test_get_node_names__rmw_fastrtps_cpp
projectroot.test_lifecycle_node
projectroot.test_messages_c__rmw_fastrtps_cpp
projectroot.test_multiple_instances
projectroot.test_node__rmw_fastrtps_cpp
projectroot.test_publisher__rmw_fastrtps_cpp
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__BoundedArrayNested
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__BoundedArrayPrimitives
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__Builtins
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__DynamicArrayNested
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__DynamicArrayPrimitives
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__Empty
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__Nested
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__Primitives
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__StaticArrayNested
projectroot.test_publisher_subscriber_cpp__rmw_fastrtps_cpp__StaticArrayPrimitives
projectroot.test_service__rmw_fastrtps_cpp
projectroot.test_state_machine_info
projectroot.test_subscription__rmw_fastrtps_cpp
projectroot.test_subscription_valid_data_cpp__rmw_fastrtps_cpp
projectroot.test_tutorial_add_two_ints_server_add_two_ints_client__rmw_fastrtps_cpp
projectroot.test_tutorial_add_two_ints_server_add_two_ints_client_async__rmw_fastrtps_cpp
service_client__rmw_fastrtps_cpp.wait_for_service_shutdown
test_add_two_ints_server_add_two_ints_client__rmw_fastrtps_cpp_Debug.test_executable
test_add_two_ints_server_add_two_ints_client_async__rmw_fastrtps_cpp_Debug.test_executable
test_composition__rmw_fastrtps_cpp_Debug.test_api_pubsub_composition
test_composition__rmw_fastrtps_cpp_Debug.test_api_srv_composition
test_executor__rmw_fastrtps_cpp.multiple_executors
test_executor__rmw_fastrtps_cpp.multithreaded_spin_call
test_executor__rmw_fastrtps_cpp.notify
test_executor__rmw_fastrtps_cpp.recursive_spin_call
test_intra_process_within_one_node__rmw_fastrtps_cpp.nominal_usage
test_local_parameters__rmw_fastrtps_cpp.get_from_node_primitive_type
test_local_parameters__rmw_fastrtps_cpp.get_from_node_variant_type
test_local_parameters__rmw_fastrtps_cpp.get_parameter_or
test_local_parameters__rmw_fastrtps_cpp.helpers
test_local_parameters__rmw_fastrtps_cpp.local_asynchronous
test_local_parameters__rmw_fastrtps_cpp.local_synchronous
test_local_parameters__rmw_fastrtps_cpp.local_synchronous_repeated
test_local_parameters__rmw_fastrtps_cpp.set_parameter_if_not_set
test_multiple_service_calls__rmw_fastrtps_cpp.multiple_clients
test_multithreaded__rmw_fastrtps_cpp.multi_access_publisher
test_multithreaded__rmw_fastrtps_cpp.multi_access_publisher_intra_process
test_multithreaded__rmw_fastrtps_cpp.multi_consumer_clients
test_multithreaded__rmw_fastrtps_cpp.multi_consumer_intra_process
test_multithreaded__rmw_fastrtps_cpp.multi_consumer_single_producer
test_publisher__rmw_fastrtps_cpp.publish_with_const_reference
Most only impact the
rmw_fastrtps
variant of tests, but some are not run for each rmw implementation. The ones that don't have fastrtps in the name are:projectroot.test_callback_exceptions
projectroot.test_default_state_machine
projectroot.test_externally_defined_services
projectroot.test_find_weak_nodes
projectroot.test_lifecycle_node
projectroot.test_multiple_instances
projectroot.test_state_machine_info
Without digging into the details of these tests I would think it's because they're using the default RMW implementation of
rmw_fastrtps
, given howrmw_connext_cpp
tests seem unaffected. If these tests are actually rmw-agnostic could someone please point it out.Symptom
They most common error output is an SEH exception (e.g. http://ci.ros2.org/view/nightly/job/nightly_win_deb/435/testReport/(root)/projectroot/test_find_weak_nodes/):
but sometimes it's just bad return codes e.g. http://ci.ros2.org/view/nightly/job/nightly_win_deb/435/testReport/(root)/projectroot/test_tutorial_add_two_ints_server_add_two_ints_client__rmw_fastrtps_cpp/
Investigations
At the time we were still using a pinned version of fastrtps, so I would rule out any changes on that repo. There also don't seem to have been any work on relevant windows buildfarm machines then (eatable was touch on the 7th but it hasn't run debug nightlies since mach 29). These are the PRs that were merged on our repos around that time: https://github.com/search?p=1&q=user%3Aament+user%3Aros2+merged%3A%222017-04-06T22%3A00%3A00-08%3A00+..+2017-04-08T15%3A30%3A00-08%3A00%22&type=Issues&utf8=%E2%9C%93
It's almost all the namespace implementation. There were two other PRs in ament_tools, but even resetting the head of ament_tools to before those two PRs were merged, the tests still fail: http://ci.ros2.org/job/ci_windows/2679/#showFailuresLink
Conclusion
This seems to be caused by the changes to support namespaces in ros2/rmw#95 or one of the related PRs. Not all tests fail, (e.g. this pub-sub passes http://ci.ros2.org/job/ci_windows/2679/testReport/(root)/test_publisher_subscriber__StaticArrayNested__rclcpp__rmw_connext_cpp__rmw_fastrtps_cpp_Debug/).
My suspicion is that it's only tests that are creating nodes with anything more than the node name passed. This is because only the
test_rclcpp
tests modified in https://github.com/ros2/system_tests/pull/196/files were affected. @wjwwood does it seem plausible that those PRs introduced this? (I may have missed a possibility and I wouldn't want to declare an incorrect cause)The text was updated successfully, but these errors were encountered: