-
Notifications
You must be signed in to change notification settings - Fork 794
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
Fixed the lock ordering between EDP and PDP [4557] #192
Conversation
7d0c896
to
94d808f
Compare
This PR resolves the deadlocking described in #200 |
For what it's worth I have also tested the full ros2 CI using this branch and no other regressions were observed. This is not a comment on the code changes, just the resulting behaviour changes. |
Could you let us know if this is likely to be reviewed in the next week, please? (We understand that your team is busy, we just need to do something about the ROS 2 tests that are failing from #200, and an ETA on this PR will help us decide if we should pin fastrtps or just wait). Thanks! |
Hi dhood, yes, we will review this PR next week. |
Thank you for the update @JaimeMartin |
@guillaumeautran Last week a fellow worker tells me he detected a segmentation fault using your PR. I've checked it right now and get it too.
It's good your intention of use shared_ptr, but I believe it has repercutions knowing how that part is designed. |
Thanks for the feedback! Let me have a look. |
Yeap, I see it now. The problem is the suicidal timer TimedEventImpl.cpp deleting itself. With shared pointers, once the last reference is cleared, the memory is deleted without delay. Now, does that not worry you to have a class basically doing a delete on the |
Fixed a deadlock problem when removing writer proxies / reader proxies releasing the PDP mutex pior to going down proxies.
Also, converted some pointers to smart pointers to avoid memory leakage.
Issue: #190