-
Notifications
You must be signed in to change notification settings - Fork 435
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
Bionic Fast-RTPS SEGFAULT on Parameters #464
Comments
After some inspection, I think that the issue arises from the fact that by default, the I also see that there was a modification to handle a bug in zero length arrays upstream, I'm going to see if it's related (eProsima/Fast-CDR@581bc96) |
Thanks @mjcarroll for picking this up. To give slightly more context on this based on our investigations from last week:
|
Upstream fix was not related. |
I built a small test program to isolate the serialization/deserialization mechanisms: The problem is reproducible, with a segfault occurring in the deserialization phase. |
ASAN Results:
|
Does it work with the topic typesupports? I am currently running similar tests with topic ts and it seems fine. However, I am running this test on my mac. Does the same code run successfully on 16.04? |
this seem to happen only on parameters so far. All the topic tests from test_communication pass (once identified we should add a regression test case in test communication to cover a similar message type though). Last bit of information @mjcarroll found is that if we resize the container before passing it to the deserialize functions it works but if we rely on the resize happening in the rmw_fastrtps typesupport implementation it fails regardless of how big we resize the container. @mjcarroll do you have a repo with your custom test typesupport script? |
just fyi: However, there is this PR open for FastCDR which resizes the buffer before taking the payload from the wire. Don't think it's really related to this question, but I link it here for completeness. |
@mikaelarguedas it's in the gist above, I hadn't landed it anywhere more permanent before, but seems reasonable to make it a regression test once we figure it out. |
Duh 😖, thanks |
@Karsten1987 If you get a chance, you should include a message that includes an array of sub-messages that also includes a string, which is what the parameters response message is. That would execute the same code paths I'm currently debugging. |
Just kidding, I read your code and you are already doing it :) I will test yours on Bionic and see what happens. |
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
Bug report
Required Info:
In the migration to Bionic, we uncovered a few failing tests, all involving Fast-RTPS, which involves segfaults in the use of Parameters. ros2/ros2#481
To reproduce:
ros2 run demo_nodes_cpp set_and_get_parameters
Backtrace:
The text was updated successfully, but these errors were encountered: