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

Error in handling of Data and DataFrag submessages [3091] #142

Closed
SteveOss opened this issue Sep 8, 2017 · 6 comments
Closed

Error in handling of Data and DataFrag submessages [3091] #142

SteveOss opened this issue Sep 8, 2017 · 6 comments

Comments

@SteveOss
Copy link

SteveOss commented Sep 8, 2017

When starting a ROS application I see error messages of the form:

[RTPS_MSG_IN Error] (ID:140012478523136) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data

These are being generated as FastRTPS is picking up messages from OpenSplice running in the same domain.

Looking at the source code in src/cpp/rtps/messages/MessageReceiver.cpp

The code for handling the case where the data is just a serialized key looks duff (from line 550):

    else if(keyFlag)
    {
        Endianness_t previous_endian = msg->msg_endian;
        if(ch.serializedPayload.encapsulation == PL_CDR_BE)
            msg->msg_endian = BIGEND;
        else if(ch.serializedPayload.encapsulation == PL_CDR_LE)
            msg->msg_endian = LITTLEEND;
        else
        {
            logError(RTPS_MSG_IN,IDSTRING"Bad encapsulation for KeyHash and status parameter list");
            return false;
        }
        //uint32_t param_size;
        if(ParameterList::readParameterListfromCDRMsg(msg, &m_ParamList, &ch, false) <= 0)
        {
            logInfo(RTPS_MSG_IN,IDSTRING"SubMessage Data ERROR, keyFlag ParameterList");
            return false;
        }
        msg->msg_endian = previous_endian;
    }

This code looks lite it's trying to read a parameter list? All there is at this point is a serialized key using
the default sub message endian. There is something similar in the DataFrag handling code, but is commented out. Doesn't look like FastRTPS does anything when Data or DataFrag just contains a key,
but should at least probably decode the sub message correctly and not generate errors.

@dljsjr
Copy link

dljsjr commented Jul 20, 2018

Sorry to necro but I wanted to bump this. We're running ROS2 Bouncy, the current release, and we see the same behavior; devices using the Fast-RTPS implementation can fail to receive data when trying to subscribe to topics being emitted by machines using other RMW libs.

@richiware richiware changed the title Error in handling of Data and DataFrag submessages Error in handling of Data and DataFrag submessages [3091] Dec 5, 2018
@MiguelCompany
Copy link
Member

[RTPS_MSG_IN Error] (ID:140012478523136) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data

These are being generated as FastRTPS is picking up messages from OpenSplice running in the same domain.

This has been solved by #371, which will be included on release 1.7.1 (#393). Feel free to check it. We will close this issue when it gets merged to master.

@MiguelCompany
Copy link
Member

This should have been solved in v1.7.1.

@SteveOss @dljsjr Could you check on your side?

@SteveOss
Copy link
Author

@MiguelCompany Am no longer with ADLINK so don't have access to OpenSplice. However the core DDSI engine has been open sourced as part of the fog05 project (now hosted as an Eclipse IoT project), so you should be able to use this to test.

@MiguelCompany
Copy link
Member

@SteveOss I do have tested it myself with the community edition. I was just informing here.

@MiguelCompany
Copy link
Member

I am closing this, as it was solved in 1.7.1. Feel free to reopen if still an issue.

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

No branches or pull requests

3 participants