Skip to content

Malformed PID_TYPE_INFORMATION in Endpoint Discovery messages #333

Description

@Leredde

Hello, I am attempting to make DustDDS and CycloneDDS-Python interoperate.

I run on 2 different archs (amd64 and arm64) the same following simple use case: 2 topics with a data type each, one for each direction. The DustDDS side has one DataReader and one DataWrite, as well as the CycloneDDS-Python side.

On amd64, data exchanges seem ok but the DustDDS side doesn't acknowledges CycloneDDS-Python Data(r). This only causes problems in reliable mode.
On arm64, I get the same behavior as in amd64, plus the Data(w) from CycloneDDS-Python is never recognized by DustDDS.

The thing is that, inspecting RTPS messages with Wireshark, I noticed that in its Data(r) and Data(w) messages, CycloneDDS-python includes a PID_TYPE_INFORMATION which doesn't seem ok : the Dependent Type Count is negative

Type Information
    Minimal
        Type Id With Dependencies
            Type Id With Size
            Dependent Type Count: -1850208753
            Dependent Type IDs [13694875]

And Wireshark tags the messages as "Malformed":

[Malformed Packet: RTPS]
    [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]
        [Malformed Packet (Exception occurred)]
        [Severity level: Error]
        [Group: Malformed]

This appears so on both archs, for Data(r) and Data(w).

For added context, the data types are generated by the CycloneDDS idlc into python files. They are simple small structs, all with the @annotate.final.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions