eclipse-cyclonedds / eclipse-cyclonedds/cyclonedds-python

Malformed PID_TYPE_INFORMATION in Endpoint Discovery messages

Open
#333 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
110
Forks
68
Avg merge
1h 8m
Merged PRs (30d)
1

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the two-topic exchange with CycloneDDS-Python and DustDDS on amd64 and arm64, then inspect the generated Python files and RTPS captures in Wireshark. Done means PID_TYPE_INFORMATION is no longer reported as malformed and reliable Data(r) and Data(w) interoperate on both architectures.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
distributed-systems, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.