-
Notifications
You must be signed in to change notification settings - Fork 65
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
Deserializing error for string type #234
Comments
Seems like this is an error with the nested message type's string member. As it fails in ucdr_deserialize_sequence_header, the length of the string member is greater than the capacity in rosidl_runtime_c__String, which is always 0. Since there's no issue with UDP comms, this could be due to an error in generating the string type from the agent side. |
This actually applies to any sequence type, like a byte array. Since capacity is always 0, any populated sequence simply just fails |
Edit: apologies, confused re: |
Describe the bug
String types in service types cause microROS on the MCU side to fail in the executor due to a deserializing error. Running it through a debugger it fails in ucdr_deserialize_sequence_header when parsing the nested message type.
Service calls with non-string types work as expected. I've verified it's not a buffer overflow since the buffer size >> bytes received. There is also no packet corruption in UDP traffic, the dest packet and src packet match 1:1.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The MCU accepts the service call and handles accordingly.
Actual behaviour
Executor fails due to deserialization error.
System information (please complete the following information):
The text was updated successfully, but these errors were encountered: