Skip to content
This repository was archived by the owner on May 31, 2025. It is now read-only.
This repository was archived by the owner on May 31, 2025. It is now read-only.

memory leak ROSOutAppender in ros::start (checked by valgrind) #1433

@oka1125

Description

@oka1125

When I checked memory leak of my program(cpp) by using valgrind, I found memory leak of roscpp.

valgrind's report is as follows:

==6326== 304 bytes in 1 blocks are possibly lost in loss record 44 of 47
==6326== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6326== by 0x40138A4: allocate_dtv (dl-tls.c:322)
==6326== by 0x40138A4: _dl_allocate_tls (dl-tls.c:539)
==6326== by 0x741626E: allocate_stack (allocatestack.c:588)
==6326== by 0x741626E: pthread_create@@GLIBC_2.2.5 (pthread_create.c:539)
==6326== by 0x71F82E8: boost::thread::start_thread_noexcept() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0)
==6326== by 0x4F636B9: ros::ROSOutAppender::ROSOutAppender() (in /opt/ros/kinetic/lib/libroscpp.so)
==6326== by 0x4F67CC4: ros::a() (in /opt/ros/kinetic/lib/libroscpp.so)
==6326== by 0x4F349D7: ros::NodeHandle::construct(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool) (in /opt/ros/kinetic/lib/libroscpp.so)
==6326== by 0x4F34DA8: ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > > const&) (in /opt/ros/kinetic/lib/libroscpp.so)
==6326== by 0x4EE0E9: ToroboState::ToroboState(std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, int, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, int> > >, bool) (ToroboState.cpp:27)
==6326== by 0x4BA84E: main (torobo_dynamics_node.cpp:102)
==6326==

According to this report, "ROSOutAppender" instance created in ros::start() function may not be released in ros::shutdown() function.
created:
https://github.com/ros/ros_comm/blob/kinetic-devel/clients/roscpp/src/libros/init.cpp#L348
to be deleted:
https://github.com/ros/ros_comm/blob/kinetic-devel/clients/roscpp/src/libros/init.cpp#L596
(*) instance is not deleted. but assigned by value 0.

Please fix this memory leak.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions