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

memory leak issue #172

Merged
merged 5 commits into from
Nov 7, 2017
Merged

memory leak issue #172

merged 5 commits into from
Nov 7, 2017

Conversation

gaoethan
Copy link
Contributor

@gaoethan gaoethan commented Nov 1, 2017

Failing to save or free storage allocated from
rcutils_join_path(), which results in memory leak

Signed-off-by: Ethan Gao ethan.gao@linux.intel.com

Copy link
Contributor

@clalancette clalancette left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, this is definitely a memory leak. I've got a couple of suggestions to simplify the code, but once those are fixed I think I'm good with this change.

return false;
file_path = rcutils_join_path(node_secure_root, file_names[i]);
if (file_path) {
if (!rcutils_is_readable(std::string(file_path).c_str())) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no real reason to wrap this in a std::string, and then get the c_str out of it; file_path is already a C-style string. Just do if (!rcutils_is_readable(file_path)) {

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it makes sense, I initially kept it as the original :) and now it's revised

}

file_path = nullptr;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no need to set file_path to nullptr here; it is a stack variable, so is going out of scope immediately. It probably doesn't matter for the final code (I'm assuming the compiler will optimize this away), but static analyzers will probably pick this up as a statement that has no effect.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

generally speaking, it's safer with specified manually, but that's not mandatory for modern compiler now, removing is oaky as well 😄 , thanks.

if (file_path) {
if (!rcutils_is_readable(std::string(file_path).c_str())) {
free(file_path);
file_path = nullptr;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no need to set file_path to nullptr here; it is a stack variable, so is going out of scope immediately. It probably doesn't matter for the final code (I'm assuming the compiler will optimize this away), but static analyzers will probably pick this up as a statement that has no effect. The same below at the final return in the function.

gaoethan and others added 2 commits November 2, 2017 01:02
Failing to save or free storage allocated from
rcutils_join_path(), which results in memory leak

Signed-off-by: Ethan Gao <ethan.gao@linux.intel.com>
@clalancette clalancette added the in review Waiting for review (Kanban column) label Nov 1, 2017
security_files_paths[i] = std::string(file_prefix + file_path);
free(file_path);
} else {
RMW_SET_ERROR_MSG("Failed to allocate memory to get security file path");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I didn't notice this before, but I think we still have a leak here. Consider the case where we successfully find and allocate ca.cert.pem, but fail to find cert.pem. In that case, we'll have allocated memory for ca.cert.pem, failed to find cert.pem, freed the memory for cert.pem, then returned false. At which point create_node will assume the entire function failed, and we'll still leak the memory for ca.cert.pem. I think we'll probably want to make the contract for get_security_file_paths such that they all succeed, or none of them do. In that case, I think we need to unwind any allocations we did in previous iterations of the loop here. Does that make sense?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, you can see the memory allocated for ca.cert.pem has been freed if it's found from the following snippet:

security_files_paths[i] = std::string(file_prefix + file_path);
free(file_path);

So even it fails to find cert.pem, it has nothing to do with ca.cert.pem, because they use their memory allocated respectively. right ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, you are correct. Sorry, I was thinking about it incorrectly. This part is fine.

return false;
}

security_files_paths[i] = std::string(file_prefix + file_path);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, also, I'm pretty sure file_prefix + file_path is wrong here. That's going to add two pointers, not concatenate the two of them together.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exactly, the std::string should keep for file_path here

reorganize the code to make it more clear

Signed-off-by: Ethan Gao <ethan.gao@linux.intel.com>
@@ -168,14 +168,25 @@ get_security_file_paths(

const char * file_prefix = "file://";

std::string tmpstr;
char * file_path = nullptr;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you not reduce the scope of the variable to within the for loop?

security_files_paths[i] = std::string(file_prefix + tmpstr);

if (rcutils_is_readable(file_path)) {
security_files_paths[i] = std::string(file_prefix + std::string(file_path));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While this works, it is faster to make file_prefix above a std::string (like std::string file_prefix("file://");, and then here, do:

security_file_paths[i] = file_prefix + std::string(file_path);

Once we have that, and reduce the scope of the file_path like @wjwwood suggested, I think this will be ready to go.

gaoethan and others added 2 commits November 7, 2017 13:18
Also remove the error messages, since in the no-enforce case,
we don't want random error messages to appear.

Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
@clalancette
Copy link
Contributor

I ended up pushing a few fixes to the code. In particular, my push did:

  1. Made file_prefix a std::string, getting rid of some copies in the loop
  2. Made the thing compile by doing a const_cast during the free
  3. Got rid of all of the RMW_SET_ERROR. The reason for this is a bit subtle. If get_security_file_paths fails, then iff security_options->enforce_security is true, we want to send an error. However, rmw_create_node (the caller of get_security_file_paths) already sets an error message, so setting it in get_security_file_paths is unnecessary work. In the case where security_options->enforce_security is false, we don't want to send any errors out of rmw_create_node (at least, not for this reason). Therefore, I think it is probably inappropriate to set errors down in get_security_file_paths at all.

I'm going to run CI on this now. @wjwwood , if you have a minute to review my work on top of Ethan's, that would be appreciated.

@clalancette
Copy link
Contributor

clalancette commented Nov 7, 2017

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

for (size_t i = 0; i < num_files; i++) {
tmpstr = std::string(rcutils_join_path(node_secure_root, file_names[i]));
if (!rcutils_is_readable(tmpstr.c_str())) {
const char * file_path = rcutils_join_path(node_secure_root, file_names[i]);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really, rcutils_join_path should not return const char * but just char * instead of needing to const cast it to free the result...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I agree with that. I'll do a separate PR with that, since every place that uses it has to do the same thing.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clalancette
Copy link
Contributor

The CI test failures are because of the known flake8 problem, reported here: ros2/build_farmer#67. Otherwise, this is looking pretty good. I'm going to merge this up. Thanks for the work!

@clalancette clalancette merged commit 425914d into ros2:master Nov 7, 2017
@clalancette clalancette removed the in review Waiting for review (Kanban column) label Nov 7, 2017
timonegk pushed a commit to timonegk/ros-rolling-rmw-fastrtps-cpp-release that referenced this pull request May 21, 2022
ros-rolling-rmw-fastrtps-cpp (6.2.1-1jammy) jammy; urgency=high
.
  * Add pub/sub init, publish and take instrumentation using tracetools (#591 <ros2/rmw_fastrtps#591>)
  * Add content filter topic feature (#513 <ros2/rmw_fastrtps#513>)
  * Add sequence numbers to message info structure (#587 <ros2/rmw_fastrtps#587>)
  * Removed some heap interactions in rmw_serialize.cpp (#590 <ros2/rmw_fastrtps#590>)
  * Contributors: Chen Lihui, Christophe Bedard, Ivan Santiago Paunovic, WideAwakeTN
.
ros-rolling-rmw-fastrtps-cpp (6.2.0-1jammy) jammy; urgency=high
.
  * Add EventsExecutor (#468 <ros2/rmw_fastrtps#468>)
  * Install headers to include/${PROJECT_NAME} (#578 <ros2/rmw_fastrtps#578>)
  * Contributors: Shane Loretz, iRobot ROS
.
ros-rolling-rmw-fastrtps-cpp (6.1.2-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (6.1.1-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (6.1.0-1jammy) jammy; urgency=high
.
  * Add client/service QoS getters. (#560 <ros2/rmw_fastrtps#560>)
  * Contributors: mauropasse
.
ros-rolling-rmw-fastrtps-cpp (6.0.0-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (5.2.2-1jammy) jammy; urgency=high
.
  * Correctly recalculate serialized size on bounded sequences. (#540 <ros2/rmw_fastrtps#540>)
  * Fix type size alignment. (#550 <ros2/rmw_fastrtps#550>)
  * Contributors: Miguel Company
.
ros-rolling-rmw-fastrtps-cpp (5.2.1-1jammy) jammy; urgency=high
.
  * Change links from index.ros.org -> docs.ros.org (#539 <ros2/rmw_fastrtps#539>)
  * Contributors: Chris Lalancette
.
ros-rolling-rmw-fastrtps-cpp (5.2.0-1jammy) jammy; urgency=high
.
  * Add rmw_publisher_wait_for_all_acked support. (#519 <ros2/rmw_fastrtps#519>)
  * Contributors: Barry Xu
.
ros-rolling-rmw-fastrtps-cpp (5.1.0-1jammy) jammy; urgency=high
.
  * Loan messages implementation (#523 <ros2/rmw_fastrtps#523>)
    * Added is_plain_ attribute to base TypeSupport.
    * Added new methods to base TypeSupport.
    * Implementation of rmw_borrow_loaned_message.
    * Implementation of rmw_return_loaned_message_from_publisher.
    * Enable loan messages on publishers of plain types.
    * Implementation for taking loaned messages.
    * Enable loan messages on subscriptions of plain types.
  * Contributors: Miguel Company
.
ros-rolling-rmw-fastrtps-cpp (5.0.0-1jammy) jammy; urgency=high
.
  * Refactor to use DDS standard API (#518 <ros2/rmw_fastrtps#518>)
  * Unique network flows (#502 <ros2/rmw_fastrtps#502>)
  * updating quality declaration links (re: ros2/docs.ros2.org#52 <ros2/docs.ros2.org#52>) (#520 <ros2/rmw_fastrtps#520>)
  * Contributors: Miguel Company, shonigmann
.
ros-rolling-rmw-fastrtps-cpp (4.5.0-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (4.4.0-1jammy) jammy; urgency=high
.
  * Add RMW function to check QoS compatibility (#511 <ros2/rmw_fastrtps#511>)
  * Capture cdr exceptions (#505 <ros2/rmw_fastrtps#505>)
  * Contributors: Jacob Perron, Miguel Company
.
ros-rolling-rmw-fastrtps-cpp (4.3.0-1jammy) jammy; urgency=high
.
  * Load profiles based on topic names (#335 <ros2/rmw_fastrtps#335>)
  * Set rmw_dds_common::GraphCache callback after init succeeds. (#496 <ros2/rmw_fastrtps#496>)
  * Handle typesupport errors on fetch. (#495 <ros2/rmw_fastrtps#495>)
  * Contributors: Eduardo Ponz Segrelles, Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (4.2.0-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (4.1.0-1jammy) jammy; urgency=high
.
  * Check for correct context shutdown (#486 <ros2/rmw_fastrtps#486>)
  * New environment variable to change easily the publication mode (#470 <ros2/rmw_fastrtps#470>)
  * Contributors: Ignacio Montesino Valle, José Luis Bueno López
.
ros-rolling-rmw-fastrtps-cpp (4.0.0-1jammy) jammy; urgency=high
.
  * Discriminate when the Client has gone from when the Client has not completely matched (#467 <ros2/rmw_fastrtps#467>)
    * Workaround when the client is gone before server sends response
    * Change add to the map to listener callback
  * Update the package.xml files with the latest Open Robotics maintainers (#459 <ros2/rmw_fastrtps#459>)
  * Update Quality Declarations and READMEs (#455 <ros2/rmw_fastrtps#455>)
    * Add QD links for dependencies to rmw_fastrtps_cpp QD
    * Provide external dependencies QD links
    * Update rmw_fastrtps README to use Fast DDS
    * Update rmw_fastrtps_cpp QD: Fast DDS & unit test
    * Update README rmw_fastrtps_cpp to QL2
  * Contributors: JLBuenoLopez-eProsima, Jaime Martin Losa, José Luis Bueno López, Michael Jeronimo
.
ros-rolling-rmw-fastrtps-cpp (3.1.4-1jammy) jammy; urgency=high
.
  * Perform fault injection in all creation/destruction APIs. (#453 <ros2/rmw_fastrtps#453>)
  * Ensure rmw_destroy_node() completes despite run-time errors. (#458 <ros2/rmw_fastrtps#458>)
  * Update rmw_fastrtps_cpp and rmw_fastrtps_shared_cpp QDs to QL2. (#456 <ros2/rmw_fastrtps#456>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (3.1.3-1jammy) jammy; urgency=high
.
  * Return RMW_RET_UNSUPPORTED in rmw_get_serialized_message_size (#452 <ros2/rmw_fastrtps#452>)
  * Contributors: Alejandro Hernández Cordero
.
ros-rolling-rmw-fastrtps-cpp (3.1.2-1jammy) jammy; urgency=high
.
  * Updated publisher/subscription allocation and wait set API return codes (#443 <ros2/rmw_fastrtps#443>)
  * Added rmw_logging tests (#442 <ros2/rmw_fastrtps#442>)
  * Contributors: Alejandro Hernández Cordero
.
ros-rolling-rmw-fastrtps-cpp (3.1.1-1jammy) jammy; urgency=high
.
  * Make service/client construction/destruction implementation compliant (#445 <ros2/rmw_fastrtps#445>)
  * Make sure type can be unregistered successfully (#437 <ros2/rmw_fastrtps#437>)
  * Contributors: Barry Xu, Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (3.1.0-1jammy) jammy; urgency=high
.
  * Add tests for native entity getters. (#439 <ros2/rmw_fastrtps#439>)
  * Avoid deadlock if graph update fails. (#438 <ros2/rmw_fastrtps#438>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (3.0.0-1jammy) jammy; urgency=high
.
  * Call Domain::removePublisher while failure occurs in create_publisher (#434 <ros2/rmw_fastrtps#434>)
  * Contributors: Barry Xu
.
ros-rolling-rmw-fastrtps-cpp (2.6.0-1jammy) jammy; urgency=high
.
  * Ensure compliant matched pub/sub count API. (#424 <ros2/rmw_fastrtps#424>)
  * Ensure compliant publisher QoS queries. (#425 <ros2/rmw_fastrtps#425>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (2.5.0-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (2.4.0-1jammy) jammy; urgency=high
.
  * Ensure compliant subscription API. (#419 <ros2/rmw_fastrtps#419>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (2.3.0-1jammy) jammy; urgency=high
.
  * Ensure compliant publisher API. (#414 <ros2/rmw_fastrtps#414>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (2.2.0-1jammy) jammy; urgency=high
.
  * Set context actual domain id (#410 <ros2/rmw_fastrtps#410>)
  * Contributors: Ivan Santiago Paunovic
.
ros-rolling-rmw-fastrtps-cpp (2.1.0-1jammy) jammy; urgency=high
.
  * Ensure compliant node construction/destruction API. (#408 <ros2/rmw_fastrtps#408>)
  * Contributors: Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (2.0.0-1jammy) jammy; urgency=high
.
  * Remove domain_id and localhost_only from node API (#407 <ros2/rmw_fastrtps#407>)
  * Amend rmw_init() implementation: require enclave. (#406 <ros2/rmw_fastrtps#406>)
  * Update Quality Declarations to QL3. (#404 <ros2/rmw_fastrtps#404>)
  * Contributors: Ivan Santiago Paunovic, Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (1.1.0-1jammy) jammy; urgency=high
.
  * Ensure compliant init/shutdown API implementation. (#401 <ros2/rmw_fastrtps#401>)
  * Update Quality Declaration to QL3. (#403 <ros2/rmw_fastrtps#403>)
  * Finalize context iff shutdown. (#396 <ros2/rmw_fastrtps#396>)
  * Make service wait for response reader (#390 <ros2/rmw_fastrtps#390>)
  * Contributors: Michel Hidalgo, Miguel Company
.
ros-rolling-rmw-fastrtps-cpp (1.0.1-1jammy) jammy; urgency=high
.
  * Add Security Vulnerability Policy pointing to REP-2006 (#389 <ros2/rmw_fastrtps#389>)
  * Update QDs for 1.0 (#383 <ros2/rmw_fastrtps#383>)
  * Contributors: Chris Lalancette, Stephen Brawner
.
ros-rolling-rmw-fastrtps-cpp (1.0.0-1jammy) jammy; urgency=high
.
  * Remove API related to manual by node liveliness.  (#379 <ros2/rmw_fastrtps#379>)
  * Update quality declarations on feature testing. (#380 <ros2/rmw_fastrtps#380>)
  * Contributors: Ivan Santiago Paunovic, Michel Hidalgo
.
ros-rolling-rmw-fastrtps-cpp (0.9.1-1jammy) jammy; urgency=high
.
  * Add package READMEs and QUALITY_DECLARATION files (#375 <ros2/rmw_fastrtps#375>)
  * Added doxyfiles (#372 <ros2/rmw_fastrtps#372>)
  * Contributors: Alejandro Hernández Cordero, brawner
.
ros-rolling-rmw-fastrtps-cpp (0.9.0-1jammy) jammy; urgency=high
.
  * Add missing export of rmw_dds_common. (#374 <ros2/rmw_fastrtps#374>)
  * Rename rosidl_message_bounds_t. (#373 <ros2/rmw_fastrtps#373>)
  * Feature/services timestamps. (#369 <ros2/rmw_fastrtps#369>)
  * Add support for taking a sequence of messages. (#366 <ros2/rmw_fastrtps#366>)
  * security-context -> enclave. (#365 <ros2/rmw_fastrtps#365>)
  * Rename rosidl_generator_c namespace to rosidl_runtime_c. (#367 <ros2/rmw_fastrtps#367>)
  * Remove custom typesupport for rmw_dds_common interfaces. (#364 <ros2/rmw_fastrtps#364>)
  * Added rosidl_runtime c and cpp depencencies. (#351 <ros2/rmw_fastrtps#351>)
  * Switch to one Participant per Context. (#312 <ros2/rmw_fastrtps#312>)
  * Add rmw_*_event_init() functions. (#354 <ros2/rmw_fastrtps#354>)
  * Fixing type support C/CPP mix on rmw_fastrtps_dynamic_cpp. (#350 <ros2/rmw_fastrtps#350>)
  * Fix build warning in Ubuntu Focal. (#346 <ros2/rmw_fastrtps#346>)
  * Code style only: wrap after open parenthesis if not in one line. (#347 <ros2/rmw_fastrtps#347>)
  * Passing down type support information (#342 <ros2/rmw_fastrtps#342>)
  * Implement functions to get publisher and subcription informations like QoS policies from topic name. (#336 <ros2/rmw_fastrtps#336>)
  * Contributors: Alejandro Hernández Cordero, Dirk Thomas, Ingo Lütkebohle, Ivan Santiago Paunovic, Jaison Titus, Miaofei Mei, Michael Carroll, Miguel Company, Mikael Arguedas
.
ros-rolling-rmw-fastrtps-cpp (0.8.1-1jammy) jammy; urgency=high
.
  * use return_loaned_message_from (#334 <ros2/rmw_fastrtps#334>)
  * Restrict traffic to localhost only if env var is provided (#331 <ros2/rmw_fastrtps#331>)
  * Zero copy api (#322 <ros2/rmw_fastrtps#322>)
  * update signature for added pub/sub options (#329 <ros2/rmw_fastrtps#329>)
  * Contributors: Brian Marchi, Karsten Knese, William Woodall
.
ros-rolling-rmw-fastrtps-cpp (0.8.0-1jammy) jammy; urgency=high
.
  * Add function for getting clients by node (#293 <ros2/rmw_fastrtps#293>)
  * Implement get_actual_qos() for subscriptions (#287 <ros2/rmw_fastrtps#287>)
  * Fix error message (#290 <ros2/rmw_fastrtps#290>)
  * Contributors: Jacob Perron, M. M
.
ros-rolling-rmw-fastrtps-cpp (0.7.3-1jammy) jammy; urgency=high
.
.
.
ros-rolling-rmw-fastrtps-cpp (0.7.2-1jammy) jammy; urgency=high
.
  * Centralize topic name creation logic and update to match FastRTPS 1.8 API (#272 <ros2/rmw_fastrtps#272>)
  * Contributors: Nick Burek
.
ros-rolling-rmw-fastrtps-cpp (0.7.1-1jammy) jammy; urgency=high
.
  * Support arbitrary message namespaces  (#266 <ros2/rmw_fastrtps#266>)
  * Add qos interfaces with no-op (#271 <ros2/rmw_fastrtps#271>)
  * Updates for preallocation API. (#274 <ros2/rmw_fastrtps#274>)
  * Contributors: Jacob Perron, Michael Carroll, Ross Desmond
.
ros-rolling-rmw-fastrtps-cpp (0.7.0-1jammy) jammy; urgency=high
.
  * Add function to get publisher actual qos settings (#267 <ros2/rmw_fastrtps#267>)
  * pass context to wait set and fini context (#252 <ros2/rmw_fastrtps#252>)
  * Improve service_is_available logic to protect that client is waiting forever (#238 <ros2/rmw_fastrtps#238>)
  * Merge pull request #250 <ros2/rmw_fastrtps#250> from ros2/support_static_lib
  * use namespace_prefix from shared package
  * Contributors: Dirk Thomas, DongheeYe, William Woodall, ivanpauno
.
ros-rolling-rmw-fastrtps-cpp (0.6.1-1jammy) jammy; urgency=high
.
  * Add topic cache object for managing topic relations (#236 <ros2/rmw_fastrtps#236>)
  * Fastrtps 1.7.0 (#233 <ros2/rmw_fastrtps#233>)
  * RMW_FastRTPS configuration from XML only (#243 <ros2/rmw_fastrtps#243>)
  * refactor to support init options and context (#237 <ros2/rmw_fastrtps#237>)
  * Methods to retrieve matched counts on pub/sub (#234 <ros2/rmw_fastrtps#234>)
  * use uint8_array (#240 <ros2/rmw_fastrtps#240>)
  * Contributors: Juan Carlos, Karsten Knese, Michael Carroll, MiguelCompany, Ross Desmond, William Woodall
.
ros-rolling-rmw-fastrtps-cpp (0.6.0-1jammy) jammy; urgency=high
.
  * Add semicolons to all RCLCPP and RCUTILS macros. (#229 <ros2/rmw_fastrtps#229>)
  * Include node namespaces in get_node_names (#224 <ros2/rmw_fastrtps#224>)
  * add rmw_get_serialization_format (#215 <ros2/rmw_fastrtps#215>)
  * Merge pull request #218 <ros2/rmw_fastrtps#218> from ros2/pr203
  * Revert "fix template closing indentation (#214 <ros2/rmw_fastrtps#214>)"
  * fix template closing indentation (#214 <ros2/rmw_fastrtps#214>)
  * Contributors: Chris Lalancette, Dirk Thomas, Karsten Knese, Michael Carroll, Miguel Company, Mikael Arguedas
.
ros-rolling-rmw-fastrtps-cpp (0.5.1-1jammy) jammy; urgency=high
.
  * update maintainer
  * Contributors: Dirk Thomas
.
ros-rolling-rmw-fastrtps-cpp (0.5.0-1jammy) jammy; urgency=high
.
  * Avoid allocations (#211 <ros2/rmw_fastrtps#211>)
  * Temporary buffer remove (#207 <ros2/rmw_fastrtps#207>)
  * Validate the buffer_ of CustomServiceRequest object before using it to (#210 <ros2/rmw_fastrtps#210>)
  * update usage of rcutils_join_path() (#208 <ros2/rmw_fastrtps#208>)
  * Expose raw CDR stream for publish and subscribe (#186 <ros2/rmw_fastrtps#186>)
  * Remove topic partitions (#192 <ros2/rmw_fastrtps#192>)
  * Fix leak if client reponse is never taken (#201 <ros2/rmw_fastrtps#201>)
  * Revert "Export rmw_fastrtps_cpp target" (#200 <ros2/rmw_fastrtps#200>)
  * Support access control  (#197 <ros2/rmw_fastrtps#197>)
  * Export rmw_fastrtps_cpp target (#198 <ros2/rmw_fastrtps#198>)
  * Fix deserialization segfault in bionic. (#199 <ros2/rmw_fastrtps#199>)
  * Fix namespaces (#196 <ros2/rmw_fastrtps#196>)
  * Merge pull request #182 <ros2/rmw_fastrtps#182> from ros2/node_name_in_user_data
  * add participant listener
  * add node name to user data
  * change export order for static linking (#190 <ros2/rmw_fastrtps#190>)
  * update style (#189 <ros2/rmw_fastrtps#189>)
  * optimize timeout judgement according to different condition (#187 <ros2/rmw_fastrtps#187>)
  * use existing check_wait_set_for_data to avoid duplicated code (#185 <ros2/rmw_fastrtps#185>)
  * Enable logging level manipulation from rmw_fastrtps (#156 <ros2/rmw_fastrtps#156>)
  * Small performance improvements (#183 <ros2/rmw_fastrtps#183>)
  * Segmentation error to dereference nullptr (#180 <ros2/rmw_fastrtps#180>)
  * Contributors: Dirk Thomas, Ethan Gao, Guillaume Autran, Karsten Knese, Michael Carroll, MiguelCompany, Mikael Arguedas, Minggang Wang, Rohit Salem, Shane Loretz, Sriram Raghunathan, William Woodall, jwang11
.
ros-rolling-rmw-fastrtps-cpp (0.4.0-1jammy) jammy; urgency=high
.
  * Merge pull request #178 <ros2/rmw_fastrtps#178> from ros2/fix_wrong_count
  * Merge pull request #177 <ros2/rmw_fastrtps#177> from ros2/rename_group
  * Wait set two words (#175 <ros2/rmw_fastrtps#175>)
  * not exporting pthread manually (#174 <ros2/rmw_fastrtps#174>)
  * Merge pull request #169 <ros2/rmw_fastrtps#169> from ros2/rep149
  * Merge pull request #171 <ros2/rmw_fastrtps#171> from jwang11/master
  * rcutils_join_path returns a char * now. (#173 <ros2/rmw_fastrtps#173>)
  * memory leak issue (#172 <ros2/rmw_fastrtps#172>)
  * Unify and simplify de/serializeROSmessage processing
  * Avoid duplicated code in calculateMaxSerializedSize for array and normal member (#168 <ros2/rmw_fastrtps#168>)
  * Fix the issues to dereference to nullptr (#165 <ros2/rmw_fastrtps#165>)
  * Fix rmw_fastrtps dead code (#163 <ros2/rmw_fastrtps#163>)
  * Merge pull request #167 <ros2/rmw_fastrtps#167> from deng02/tune-count-pub-sub
  * Remove string allocation in the count of subscribers and publishers
  * use auto deduction and nullptr to keep coding style consistent (#162 <ros2/rmw_fastrtps#162>)
  * Merge pull request #164 <ros2/rmw_fastrtps#164> from dejanpan/master
  * Fix several parameter check issues in rmw_fastrtps_cpp apis
  * Remove unnecessary dependency on rosidl_generator_cpp (#161 <ros2/rmw_fastrtps#161>)
  * Move the hasData checks for non-blocking wait 'timeout' higher (#158 <ros2/rmw_fastrtps#158>)
  * Support loading default XML profile file (#153 <ros2/rmw_fastrtps#153>)
  * Drop duplicated rmw_init.cpp in rmw_fastrtps_cpp/CMakeLists.txt (#155 <ros2/rmw_fastrtps#155>)
  * Merge pull request #154 <ros2/rmw_fastrtps#154> from ros2/uncrustify_master
  * Removing magic numbers: old maximun lengths (#152 <ros2/rmw_fastrtps#152>)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants