Skip to content

Bundled idlc in cyclonedds 11.0.1 Linux wheel crashes with segmentation fault #336

Description

@ishuying

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions