-
Notifications
You must be signed in to change notification settings - Fork 411
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
Apply a fix for LifecycleNode::get_current_state thread safety which is equivalent to #1756 into Humble #2172
Comments
I'll leave a few comments:
I hope this helps point in the correct direction. |
The bulk of the changes in #1756 are to |
You are correct w.r.t. However, we still have the ABI problem with |
@clalancette I followed your suggested strategy for protecting |
#2183 got merged, so I'll close this as completed. |
There is a thread safety bug in
LifecycleNode
which was originally documented in #1746 and fixed in #1756. However, the way the fix was implemented involves a breaking ABI change, and since it was merged after the Humble release it cannot be directly backported to Humble.#1746 is actually a quite severe bug, especially for systems which are using ros2_control's ControllerManager, which is tightly integrated with the lifecycle node concept. My context here is that I work with several robots which need to stay up and continuously running 24/7, and every few days I see a segfault like the ones posted in ros-controls/ros2_control#979. From my perspective the fix for this certainly seems like something that should be backported into the LTS release as well.
From reading the discussion in #1756 and related PRs, one reason why a fix took so long to get merged and involved an ABI break is that the work to implement the fix uncovered several other bugs in LifecycleNode, and the fixes for those bugs needed to get merged as a precondition for merging #1756. If I want to apply an equivalent fix to Humble, I'll need to follow a different path since I need to preserve ABI compatibility. Does anyone who's already familiar with these libraries have ideas for how to approach this?
The text was updated successfully, but these errors were encountered: