Skip to content

Relax cyclonedds pin: 0.10.2 Domain creation hangs on modern kernels#161

Open
PhysicistJohn wants to merge 1 commit into
unitreerobotics:masterfrom
PhysicistJohn:fix-channelfactory-idempotent-init
Open

Relax cyclonedds pin: 0.10.2 Domain creation hangs on modern kernels#161
PhysicistJohn wants to merge 1 commit into
unitreerobotics:masterfrom
PhysicistJohn:fix-channelfactory-idempotent-init

Conversation

@PhysicistJohn

@PhysicistJohn PhysicistJohn commented Jun 12, 2026

Copy link
Copy Markdown

On recent Linux kernels (observed: Ubuntu 24.04, kernel 6.17), the pinned cyclonedds==0.10.2 wheel's Domain creation blocks indefinitely when using the auto-determine config path — i.e. ChannelFactoryInitialize(id) with no networkInterface argument, or a bare cyclonedds.domain.Domain(id). Initialization with an explicit interface (ChannelFactoryInitialize(0, "lo")) is unaffected.

The SDK works against cyclonedds 11.x — verified Domain creation, ChannelFactoryInitialize with and without an explicit interface, and pub/sub on rt/lowstate / rt/lowcmd, on Python 3.10 and 3.12. This relaxes the pin to >=0.10.2,<12 so default-path users on modern kernels resolve a working wheel, while older environments keep resolving 0.10.x.

One interop note for reviewers: cyclonedds 0.10.x and 11.x participants do not discover each other on a multicast-incapable loopback interface (relevant for sim setups where another process in the system still runs 0.10.x, e.g. alongside the C/C++ SDK's bundled libddsc). Mixed-version deployments on lo should keep all participants on the same major version.

(ChannelFactory.Init's __initialized guard already makes double-init safe on cyclonedds ≥ 11, where re-creating a live domain raises — that part is already handled on current master.)

cyclonedds 0.10.2's Domain creation blocks indefinitely on recent Linux
kernels (observed on Ubuntu 24.04 / kernel 6.17), failing
ChannelFactoryInitialize with no error output. The SDK runs against
cyclonedds 11.x (verified Domain creation, ChannelFactoryInitialize
with explicit interface, and pub/sub on rt/lowstate and rt/lowcmd, on
Python 3.10 and 3.12). Relax the pin to >=0.10.2,<12 so installs on
modern kernels resolve a working wheel.
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

Successfully merging this pull request may close these issues.

1 participant