Closed traversaro closed 1 year ago
Ok, beside the two fixes in the PR text, I have the following test failures:
On macOS the dev::Map2D_nws_ros2_test
test was failing with an error related to the fact that libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib
was not found:
12/21 Test #12: dev::Map2D_nws_ros2_test ........................***Failed 0.66 sec
Filters: "dev::Map2D_nws_ros2_test"
Randomness seeded to: 3914131991
[DEBUG] |yarp.dev.PolyDriver|map2D_nws_ros2| Parameters are (device map2D_nws_ros2)
Warning: |yarp.device.map2D_nws_ros2| Missing name parameter. Using: map2D_nws_ros
[INFO] |yarp.os.Port|/map2D_nws_ros/rpc| Port /map2D_nws_ros/rpc active at tcp://localhost:10002/
Warning: |yarp.device.map2D_nws_ros2| Missing node_name parameter. Using: map2D_nws_ros
[rcutils|error_handling.c:65] an error string (message, file name, or formatted message) will be truncated
[rcutils|error_handling.c:65] an error string (message, file name, or formatted message) will be truncated
[rcutils|error_handling.c:65] an error string (message, file name, or formatted message) will be truncated
[rcutils|error_handling.c:108] rcutils_set_error_state()
This error state is being overwritten:
'Service type support not from this implementation. Got:
Handle's typesupport identifier (rosidl_typesupport_cpp) is not supported by this library, at /Users/runner/mambaforge/conda-bld/ros-humble-rosidl-typesupport-cpp-0_1675650163654/work/ros-humble-rosidl-typesupport-cpp/src/work/src/type_support_dispatch.hpp:113
Could not load library libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib: dlopen error: dlopen(libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib, 0x0001): tried: '/Users/runner/miniconda3/envs/test/lib/libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib' (no such file), '/Users/runner/miniconda3/envs/test/lib/libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib' (no such file), at /Users/runner/mambaforge/conda-bld/ros-humble-rmw-cyclonedds-cpp-0_1675652277407/work/ros-humble-rmw-cyclonedds-cpp/src/work/src/rmw_node.cpp:4508'
with this new error message:
'type_support is null, at /Users/runner/mambaforge/conda-bld/ros-humble-rmw-cyclonedds-cpp-0_1675652277407/work/ros-humble-rmw-cyclonedds-cpp/src/work/src/rmw_node.cpp:4573'
rcutils_reset_error() should be called after error handling to avoid this.
harness_dev_Map2D_nws_ros2 is a Catch2 v3.2.1 host application.
Run with -? for options
-------------------------------------------------------------------------------
dev::Map2D_nws_ros2_test
Checking map2D_nws_ros2 device
-------------------------------------------------------------------------------
/Users/runner/work/yarp-devices-ros2/yarp-devices-ros2/src/devices/map2D_nws_ros2/tests/Map2D_nws_ros2_test.cpp:31
...............................................................................
/Users/runner/work/yarp-devices-ros2/yarp-devices-ros2/src/devices/map2D_nws_ros2/tests/Map2D_nws_ros2_test.cpp:39: FAILED:
REQUIRE( ddmapserver.open(pmapserver_cfg) )
due to unexpected exception with message:
could not create service: type_support is null, at /Users/runner/mambaforge/
conda-bld/ros-humble-rmw-cyclonedds-cpp-0_1675652277407/work/ros-humble-rmw-
cyclonedds-cpp/src/work/src/rmw_node.cpp:4573, at /Users/runner/mambaforge/
conda-bld/ros-humble-rcl-0_1675656184824/work/ros-humble-rcl/src/work/src/
rcl/service.c:124
===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
As an initial fix, I moved the install before the test and changed the CMAKE_INSTALL_PREFIX
to ${CONDA_PREFIX}
, so to ensure that the test could find libmap2d_nws_ros2_msgs__rosidl_typesupport_introspection_cpp.dylib
in the same library in which all the other libraries are found. Note that this should not be needed and apparently it is not needed on Linux, but at least is a first step in getting the test to run.
Two test fails on Windows, rangefinder2D_nwc_ros2_test
and rgbdSensor_nwc_ros2_test
:
Test project D:/a/yarp-devices-ros2/yarp-devices-ros2/build
Start 1: copyright
1/21 Test #1: copyright ....................................... Passed 0.59 sec
Start 2: lint_cmake
2/21 Test #2: lint_cmake ...................................... Passed 0.39 sec
Start 3: xmllint
3/21 Test #3: xmllint ......................................... Passed 0.70 sec
Start 4: copyright
4/21 Test #4: copyright ....................................... Passed 0.42 sec
Start 5: lint_cmake
5/21 Test #5: lint_cmake ...................................... Passed 0.33 sec
Start 6: xmllint
6/21 Test #6: xmllint ......................................... Passed 0.54 sec
Start 7: dev::Rangefinder2D_nws_ros2_test
7/21 Test #7: dev::Rangefinder2D_nws_ros2_test ................ Passed 0.52 sec
Start 8: dev::rangefinder2D_nwc_ros2_test
8/21 Test #8: dev::rangefinder2D_nwc_ros2_test ................***Exception: SegFault 0.20 sec
Filters: "dev::rangefinder2D_nwc_ros2_test"
Randomness seeded to: 3884580989
[DEBUG] |yarp.dev.PolyDriver|rangefinder2D_nwc_ros2| Parameters are (device rangefinder2D_nwc_ros2) (node_name rangefinder2D_nwc) (topic_name "/rangefinder2D_nwc_topic")
[INFO] Ros2Subscriber creating topic: /rangefinder2D_nwc_topic
[INFO] |yarp.ros2.rangefinder2D_nwc_ros2| opened
[INFO] |yarp.dev.PolyDriver|rangefinder2D_nwc_ros2| Created wrapper <rangefinder2D_nwc_ros2>. See C++ class Rangefinder2D_nwc_ros2 for documentation.
harness_dev_Rangefinder2D_nwc_ros2.exe is a Catch2 v3.2.1 host application.
Run with -? for options
-------------------------------------------------------------------------------
dev::rangefinder2D_nwc_ros2_test
Checking the nwc alone
-------------------------------------------------------------------------------
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rangefinder2D_nwc_ros2\tests\Rangefinder2D_nwc_ros2_test.cpp(22)
...............................................................................
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rangefinder2D_nwc_ros2\tests\Rangefinder2D_nwc_ros2_test.cpp(32): PASSED:
REQUIRE( ddnwc.open(pcfg) )
with expansion:
true
[INFO] |yarp.ros2.rangefinder2D_nwc_ros2| closing...
[INFO] |yarp.ros2.rangefinder2D_nwc_ros2| closed
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rangefinder2D_nwc_ros2\tests\Rangefinder2D_nwc_ros2_test.cpp(37): PASSED:
CHECK( ddnwc.close() )
with expansion:
true
===============================================================================
All tests passed (2 assertions in 1 test case)
Start 9: dev::Rangefinder2D_nws_ros2_test
9/21 Test #9: dev::Rangefinder2D_nws_ros2_test ................ Passed 0.54 sec
Start 10: dev::localization2D_nws_ros2_test
10/21 Test #10: dev::localization2D_nws_ros2_test ............... Passed 0.43 sec
Start 11: dev::controlBoard_nws_ros2_test
11/21 Test #11: dev::controlBoard_nws_ros2_test ................. Passed 0.45 sec
Start 12: dev::Map2D_nws_ros2_test
12/21 Test #12: dev::Map2D_nws_ros2_test ........................ Passed 0.35 sec
Start 13: dev::frameGrabber_nws_ros2_test
13/21 Test #13: dev::frameGrabber_nws_ros2_test ................. Passed 1.49 sec
Start 14: dev::rgbdToPointCloudSensor_nws_ros2_test
14/21 Test #14: dev::rgbdToPointCloudSensor_nws_ros2_test ....... Passed 0.51 sec
Start 15: dev::mobileBaseVelocityControl_nws_ros2
15/21 Test #15: dev::mobileBaseVelocityControl_nws_ros2 ......... Passed 0.47 sec
Start 16: dev::odometry2D_nws_ros2_test
16/21 Test #16: dev::odometry2D_nws_ros2_test ................... Passed 0.46 sec
Start 17: dev::frameTransformSet_nwc_ros2_test
17/21 Test #17: dev::frameTransformSet_nwc_ros2_test ............ Passed 0.32 sec
Start 18: dev::frameTransformGet_nwc_ros2_test
18/21 Test #18: dev::frameTransformGet_nwc_ros2_test ............ Passed 0.31 sec
Start 19: dev::rgbdSensor_nwc_ros2_test
19/21 Test #19: dev::rgbdSensor_nwc_ros2_test ...................***Exception: SegFault 0.18 sec
Filters: "dev::rgbdSensor_nwc_ros2_test"
Randomness seeded to: 3359617904
[DEBUG] |yarp.dev.PolyDriver|rgbdSensor_nwc_ros2| Parameters are (color_topic_name "/rgbdSensor_nwc_color_topic") (depth_topic_name "/rgbdSensor_nwc_depth_topic") (device rgbdSensor_nwc_ros2) (node_name rgbdSensor_nwc_node)
[INFO] Ros2Subscriber creating topic: /camera_info
[INFO] Ros2Subscriber creating topic: /camera_info
[INFO] Ros2Subscriber creating topic: /rgbdSensor_nwc_color_topic
[INFO] Ros2Subscriber creating topic: /rgbdSensor_nwc_depth_topic
[INFO] |yarp.ros2.RgbdSensor_nwc_ros2| opened
[INFO] |yarp.dev.PolyDriver|rgbdSensor_nwc_ros2| Created wrapper <rgbdSensor_nwc_ros2>. See C++ class RgbdSensor_nwc_ros2 for documentation.
harness_dev_rgbdSensor_nwc_ros2.exe is a Catch2 v3.2.1 host application.
Run with -? for options
-------------------------------------------------------------------------------
dev::rgbdSensor_nwc_ros2_test
Checking the nwc alone
-------------------------------------------------------------------------------
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rgbdSensor_nwc_ros2\tests\rgbdSensor_nwc_ros2_test.cpp(22)
...............................................................................
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rgbdSensor_nwc_ros2\tests\rgbdSensor_nwc_ros2_test.cpp(33): PASSED:
REQUIRE( ddnwc.open(pcfg) )
with expansion:
true
[INFO] |yarp.ros2.RgbdSensor_nwc_ros2| closing...
[INFO] |yarp.ros2.RgbdSensor_nwc_ros2| closed
D:\a\yarp-devices-ros2\yarp-devices-ros2\src\devices\rgbdSensor_nwc_ros2\tests\rgbdSensor_nwc_ros2_test.cpp(38): PASSED:
CHECK( ddnwc.close() )
with expansion:
true
===============================================================================
All tests passed (2 assertions in 1 test case)
Start 20: dev::MultipleAnalogSensors_nws_ros2_test
20/21 Test #20: dev::MultipleAnalogSensors_nws_ros2_test ........ Passed 0.47 sec
Start 21: dev::rangefinder2D_controlBoard_nws_ros2_test
21/21 Test #21: dev::rangefinder2D_controlBoard_nws_ros2_test ... Passed 0.51 sec
90% tests passed, 2 tests failed out of 21
Label Time Summary:
copyright = 1.01 sec*proc (2 tests)
lint_cmake = 0.72 sec*proc (2 tests)
linter = 2.97 sec*proc (6 tests)
xmllint = 1.24 sec*proc (2 tests)
Total Test time (real) = 10.23 sec
The following tests FAILED:
8 - dev::rangefinder2D_nwc_ros2_test (SEGFAULT)
19 - dev::rgbdSensor_nwc_ros2_test (SEGFAULT)
Errors while running CTest
Error: Process completed with exit code 8.
In both cases the test segfault, so further checks are needed.
The segfault related to dev::rgbdSensor_nwc_ros2_test
disappears if the delete m_spinner
is commented, not sure if this could be connected to the race condition you were referring to f2f @randaz81 .
`
yep, the race condition is somehow related to rclcpp handling, but the destructor cannot be removed (it will create other issues)
This PR fixes the following aspects:
^
instead of/
as line separators