eclipse-cyclonedds / eclipse-cyclonedds/cyclonedds-python

Bundled `idlc` in cyclonedds 11.0.1 Linux wheel crashes with segmentation fault

Open
#336 0 comments 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

Description

The idlc executable bundled with cyclonedds==11.0.1 crashes immediately with a segmentation fault on Linux.

The issue has been reproduced on both Ubuntu 22.04 and Ubuntu 24.04. It is also reproducible in a newly created Ubuntu Docker container.

The same behavior occurs when running the bundled idlc directly, through cyclonedds.tools.wheel_idlc, and when invoking the dynamic loader with --list.

Tested environments

Ubuntu 22.04
OS: Ubuntu 22.04
Architecture: x86_64
cyclonedds: 11.0.1

Wheel SHA256:
9eaa0e08ea41206b495f36fa4c008ff89113f78a39e54f4a17793d9a68e7b978
Ubuntu 24.04
OS: Ubuntu 24.04
Architecture: x86_64
cyclonedds: 11.0.1

Wheel SHA256:
3e96507088c57165f7c189c3a85be866f74c7449fb0cbc6316ad306e5f599be1

The issue was also reproduced in a clean Ubuntu Docker container.

Steps to reproduce

Install the package:

python3 -m pip install cyclonedds==11.0.1

Locate the installed idlc:

python3 -m pip show -f cyclonedds | grep idlc

For example, on Ubuntu 22.04:

cyclonedds/.libs/idlc
cyclonedds/__idlc__.py
cyclonedds/tools/wheel_idlc/__init__.py

The bundled executable is located at:

~/.local/lib/python3.10/site-packages/cyclonedds/.libs/idlc

Run it directly:

~/.local/lib/python3.10/site-packages/cyclonedds/.libs/idlc -h
Actual result
Segmentation fault (core dumped)

Reproduction through the Python wrapper

Run:

python3 -c \
  'from cyclonedds.tools.wheel_idlc import command; command()' \
  -h
Actual result
Segmentation fault (core dumped)

Reproduction with an empty environment

SITE=/home/user/.local/lib/python3.10/site-packages
IDLC=$SITE/cyclonedds/.libs/idlc

env -i \
  HOME="$HOME" \
  PATH=/usr/bin:/bin \
  /lib64/ld-linux-x86-64.so.2 --list "$IDLC"

echo $?
Actual result
Segmentation fault (core dumped)
139

Expected behavior

Running:

idlc -h

or the bundled equivalent:

/path/to/site-packages/cyclonedds/.libs/idlc -h

should display the idlc command-line help and exit normally.

It should also be possible to use the bundled compiler for Python IDL generation, for example:

idlc -l py example.idl

without the executable terminating with a segmentation fault.

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 crash with the bundled .libs/idlc executable, the cyclonedds.tools.wheel_idlc command(), and the empty-environment loader command. Read cyclonedds/idlc.py and cyclonedds/tools/wheel_idlc/init.py alongside the wheel contents. Done means idlc -h exits normally and idlc -l py example.idl can run without a segmentation fault.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, cli
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.