rcl: memory leaks in rcl(tests)

while debugging #715 I came across that quite some tests are actually leaking memory. I haven’t looked into whether these are related to the tests or actually something within rcl itself.

for test_node__rmw_fastrtps_cpp:

==23229== HEAP SUMMARY:
==23229==     in use at exit: 3,132 bytes in 28 blocks
==23229==   total heap usage: 24,212 allocs, 24,184 frees, 19,883,015 bytes allocated
==23229== 
==23229== 208 bytes in 1 blocks are definitely lost in loss record 13 of 16
==23229==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23229==    by 0x5CFD615: __default_allocate (allocator.c:35)
==23229==    by 0x4E4D950: _rcl_allocate_initialized_arguments_impl (arguments.c:1997)
==23229==    by 0x4E463CC: rcl_parse_arguments (arguments.c:274)
==23229==    by 0x176837: TestNodeFixture__rmw_fastrtps_cpp_test_rcl_node_options_fail_Test::TestBody() (test_node.cpp:764)
==23229==    by 0x1D82BF: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23229==    by 0x1D2044: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23229==    by 0x1B0431: testing::Test::Run() (gtest.cc:2522)
==23229==    by 0x1B0DC6: testing::TestInfo::Run() (gtest.cc:2703)
==23229==    by 0x1B146F: testing::TestCase::Run() (gtest.cc:2825)
==23229==    by 0x1BC50D: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:5216)
==23229==    by 0x1D94B6: bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2447)
==23229== 
==23229== 784 (168 direct, 616 indirect) bytes in 7 blocks are definitely lost in loss record 15 of 16
==23229==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23229==    by 0x5CFD615: __default_allocate (allocator.c:35)
==23229==    by 0x797FF24: rmw_allocate (allocators.c:29)
==23229==    by 0x79800C0: rmw_wait_set_allocate (allocators.c:133)
==23229==    by 0x84254B9: rmw_fastrtps_shared_cpp::__rmw_create_wait_set(char const*, rmw_context_t*, unsigned long) (rmw_wait_set.cpp:38)
==23229==    by 0x83EEAEA: node_listener(rmw_context_t*) (listener_thread.cpp:132)
==23229==    by 0x83EF3B6: void std::__invoke_impl<void, void (*)(rmw_context_t*), rmw_context_t*>(std::__invoke_other, void (*&&)(rmw_context_t*), rmw_context_t*&&) (invoke.h:60)
==23229==    by 0x83EEFDA: std::__invoke_result<void (*)(rmw_context_t*), rmw_context_t*>::type std::__invoke<void (*)(rmw_context_t*), rmw_context_t*>(void (*&&)(rmw_context_t*), rmw_context_t*&&) (invoke.h:95)
==23229==    by 0x83EFA48: decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (*)(rmw_context_t*), rmw_context_t*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (thread:234)
==23229==    by 0x83EF9E9: std::thread::_Invoker<std::tuple<void (*)(rmw_context_t*), rmw_context_t*> >::operator()() (thread:243)
==23229==    by 0x83EF9B9: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(rmw_context_t*), rmw_context_t*> > >::_M_run() (thread:186)
==23229==    by 0x64656DE: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==23229== 
==23229== LEAK SUMMARY:
==23229==    definitely lost: 376 bytes in 8 blocks
==23229==    indirectly lost: 616 bytes in 7 blocks
==23229==      possibly lost: 0 bytes in 0 blocks
==23229==    still reachable: 2,140 bytes in 13 blocks
==23229==         suppressed: 0 bytes in 0 blocks

for comparison, the same test with cyclonedds:

==23528== HEAP SUMMARY:
==23528==     in use at exit: 5,285 bytes in 84 blocks
==23528==   total heap usage: 19,309 allocs, 19,225 frees, 45,359,169 bytes allocated
==23528== 
==23528== 29 bytes in 1 blocks are definitely lost in loss record 1 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x1DAA6A: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) (basic_string.tcc:219)
==23528==    by 0x5D45786: cycdeser::deserialize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (serdes.hpp:165)
==23528==    by 0x5D450F4: cycdeser::operator>>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (serdes.hpp:113)
==23528==    by 0x5D4657B: void rmw_cyclonedds_cpp::deserialize_field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(rosidl_typesupport_introspection_cpp::MessageMember const*, void*, cycdeser&, bool) (TypeSupport_impl.hpp:281)
==23528==    by 0x5D503D6: rmw_cyclonedds_cpp::TypeSupport<rosidl_typesupport_introspection_cpp::MessageMembers>::deserializeROSmessage(cycdeser&, rosidl_typesupport_introspection_cpp::MessageMembers const*, void*, bool) (TypeSupport_impl.hpp:514)
==23528==    by 0x5D5051A: rmw_cyclonedds_cpp::TypeSupport<rosidl_typesupport_introspection_cpp::MessageMembers>::deserializeROSmessage(cycdeser&, rosidl_typesupport_introspection_cpp::MessageMembers const*, void*, bool) (TypeSupport_impl.hpp:542)
==23528==    by 0x5D4AA30: rmw_cyclonedds_cpp::TypeSupport<rosidl_typesupport_introspection_cpp::MessageMembers>::deserializeROSmessage(cycdeser&, void*, std::function<void (cycdeser&)>) (TypeSupport_impl.hpp:669)
==23528==    by 0x5D9734E: serdata_rmw_to_sample(ddsi_serdata const*, void*, void**, void*) (serdata.cpp:288)
==23528==    by 0x80CD643: ddsi_serdata_to_sample (ddsi_serdata.h:230)
==23528==    by 0x814B813: read_take_to_sample (dds_rhc_default.c:1956)
==23528==    by 0x814BF68: take_w_qminv_inst (dds_rhc_default.c:2091)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 38 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x161872: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_accessors_Test::TestBody() (test_node.cpp:107)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 39 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x161872: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_accessors_Test::TestBody() (test_node.cpp:107)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 40 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x161C85: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_accessors_Test::TestBody() (test_node.cpp:131)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 41 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x161C85: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_accessors_Test::TestBody() (test_node.cpp:131)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 42 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x167BC4: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_life_cycle_Test::TestBody() (test_node.cpp:400)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 43 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x167BC4: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_life_cycle_Test::TestBody() (test_node.cpp:400)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 44 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x167DC9: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_life_cycle_Test::TestBody() (test_node.cpp:405)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 45 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x167DC9: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_life_cycle_Test::TestBody() (test_node.cpp:405)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 46 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16928F: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_name_restrictions_Test::TestBody() (test_node.cpp:445)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 47 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16928F: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_name_restrictions_Test::TestBody() (test_node.cpp:445)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 48 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16A9FE: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:513)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 49 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16A9FE: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:513)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 50 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16AC39: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:522)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 51 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16AC39: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:522)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 52 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16AF5E: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:532)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 53 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16AF5E: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:532)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 54 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16BBB3: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:572)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 55 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16BBB3: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_namespace_restrictions_Test::TestBody() (test_node.cpp:572)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 56 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16D034: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:623)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 57 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16D034: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:623)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 58 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16D5F3: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:643)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 59 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16D5F3: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:643)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 60 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16DBB2: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:663)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 61 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16DBB2: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:663)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 62 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16E171: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:683)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 63 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16E171: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:683)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 64 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D379CF: create_cdds_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*) (rmw_node.cpp:1839)
==23528==    by 0x5D37E25: create_publisher(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_publisher_options_t const*) (rmw_node.cpp:1910)
==23528==    by 0x5D34221: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1028)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16E730: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:703)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 65 of 72
==23528==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5D9668B: create_message_type_support(void const*, char const*) (serdata.cpp:84)
==23528==    by 0x5D38F3F: create_cdds_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, bool) (rmw_node.cpp:2110)
==23528==    by 0x5D39390: create_subscription(int, int, rosidl_message_type_support_t const*, char const*, rmw_qos_profile_t const*, rmw_subscription_options_t const*) (rmw_node.cpp:2177)
==23528==    by 0x5D342C3: rmw_context_impl_t::init(rmw_init_options_t*) (rmw_node.cpp:1043)
==23528==    by 0x5D357CC: rmw_create_node (rmw_node.cpp:1258)
==23528==    by 0x4E59265: rcl_node_init (node.c:263)
==23528==    by 0x16E730: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_names_Test::TestBody() (test_node.cpp:703)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528== 
==23528== 208 bytes in 1 blocks are definitely lost in loss record 70 of 72
==23528==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23528==    by 0x5A85615: __default_allocate (allocator.c:35)
==23528==    by 0x4E4D950: _rcl_allocate_initialized_arguments_impl (arguments.c:1997)
==23528==    by 0x4E463CC: rcl_parse_arguments (arguments.c:274)
==23528==    by 0x1709A7: TestNodeFixture__rmw_cyclonedds_cpp_test_rcl_node_options_fail_Test::TestBody() (test_node.cpp:764)
==23528==    by 0x1D242F: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2447)
==23528==    by 0x1CC1B4: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2483)
==23528==    by 0x1AA5A1: testing::Test::Run() (gtest.cc:2522)
==23528==    by 0x1AAF36: testing::TestInfo::Run() (gtest.cc:2703)
==23528==    by 0x1AB5DF: testing::TestCase::Run() (gtest.cc:2825)
==23528==    by 0x1B667D: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:5216)
==23528==    by 0x1D3626: bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2447)
==23528== 
==23528== LEAK SUMMARY:
==23528==    definitely lost: 1,357 bytes in 30 blocks
==23528==    indirectly lost: 1,456 bytes in 28 blocks
==23528==      possibly lost: 0 bytes in 0 blocks
==23528==    still reachable: 2,472 bytes in 26 blocks
==23528==         suppressed: 0 bytes in 0 blo

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 24 (7 by maintainers)

Most upvoted comments

@fujitatomoya

I was thinking to make a new issue and then relate it to this manager issue if I found that memory leaks in a specific test executable file.

i think that it would be nice to keep the history clearly.

I agree with it.

@Barry-Xu-2018

okay, i think memory leak could be acceptable only in test with purpose, if we keep the consistency of failing functions. but at least we should be able to tell this problem for future because we do not want to re-do the same investigation when valgrind detects it. at least doc should be added in test code to tell us test can lead to memory leak.

anyway, we can wait for the comments from other people on this!

@Karsten1987 @fujitatomoya

All analysis has been finished.
Please look at table in https://github.com/ros2/rcl/issues/721#issuecomment-686881339.
The problem which we think it should fix has created issue and submitted fix.
Other problem which we think it doesn’t need to fix are explained in that table.

@Barry-Xu-2018 CC: @iuhilnehc-ynos @Ada-King

sounds good to me, thanks. but maybe maintainer would prefer to create dedicated issue.

@iuhilnehc-ynos

in that case, we should make another issue to address? i thought this issue is to fix the https://github.com/ros2/rcl/issues/721#issue-662238882. i think that it would be nice to keep the history clearly. and maybe the problem could not be rcl, so maybe we could create meta-ticket to manage sub-issues for each component? what do you think?

@fujitatomoya

would you create PR?

Yes, I’ll create it later.