Skip to content

Static linking issue with _rosidl_generator_py.so in build _17 #76

@eholum

Description

@eholum

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

I've been running into a linking issue with our roboplan-ros wrappers: open-planning/roboplan-ros#38.

I believe the issue is summarized in this project: https://github.com/eholum/kilted-libpython-bug

Basically, I tried bumping our deps up to the latest build _17 of the kilted packages, and it seems like the _rosidl_generator_py.so libraries have an issue with static linking - namely, they don't pull in libpython. This means I get crashes like:

...libunique_identifier_msgs__rosidl_generator_py.so: undefined symbol: PyObject_GetAttrString

This seems to affect message packages in build _17 — I've confirmed it on unique_identifier_msgs, geometry_msgs, sensor_msgs, trajectory_msgs, and others. The previous build _15 (mutex 0.13.0) did not seem to have this issue. From the linked PR in roboplan, you can see those libraries were previously dynamically linked with libpython3.12.so as a dependency.

The repro project has a simple script to try loading a lib with dl_open:

int main() {
    void* h = dlopen("libunique_identifier_msgs__rosidl_generator_py.so", RTLD_NOW);
    if (!h) {
        printf("dlopen failed: %s\n", dlerror());
        return 1;
    }
    printf("OK\n");
    dlclose(h);
    return 0;
}

It does it both a kilted and jazzy environment:

pixi run -e kilted check   # static-pie, no libpython shows up
pixi run -e kilted crash   # crashes
pixi run -e jazzy check    # dynamically linked, libpython present
pixi run -e jazzy crash    # OK

Did something change in the rosidl_generator_py / rosidlcpp_generator_py recipe between 15 and 17? Or is there some other issue that I'm not understanding?

Installed packages

Name                                               Version       Build                       Size  Kind   Source
_openmp_mutex                                      4.5           20_gnu                 28.25 KiB  conda  https://conda.anaconda.org/conda-forge
argcomplete                                        3.6.3         pyhd8ed1ab_0           41.39 KiB  conda  https://conda.anaconda.org/conda-forge
bzip2                                              1.0.8         h4777abc_9            187.90 KiB  conda  https://conda.anaconda.org/conda-forge
c-ares                                             1.34.6        he30d5cf_0            212.12 KiB  conda  https://conda.anaconda.org/conda-forge
ca-certificates                                    2026.2.25     hbd8a1cb_0            143.96 KiB  conda  https://conda.anaconda.org/conda-forge
catkin_pkg                                         1.1.0         pyhd8ed1ab_0           52.84 KiB  conda  https://conda.anaconda.org/conda-forge
cmake                                              4.3.2         hc9d863e_0             21.18 MiB  conda  https://conda.anaconda.org/conda-forge
cppcheck                                           2.20.1        py312h5677ec4_0         2.81 MiB  conda  https://conda.anaconda.org/conda-forge
docutils                                           0.22.4        pyhd8ed1ab_0          427.74 KiB  conda  https://conda.anaconda.org/conda-forge
empy                                               3.3.4         pyh9f0ad1d_1           39.27 KiB  conda  https://conda.anaconda.org/conda-forge
flake8                                             7.3.0         pyhd8ed1ab_0          109.29 KiB  conda  https://conda.anaconda.org/conda-forge
flake8-builtins                                    3.1.0         pyhd8ed1ab_0           19.04 KiB  conda  https://conda.anaconda.org/conda-forge
flake8-comprehensions                              3.17.0        pyhd8ed1ab_0           13.72 KiB  conda  https://conda.anaconda.org/conda-forge
flake8-docstrings                                  1.7.0         pyhd8ed1ab_0           10.15 KiB  conda  https://conda.anaconda.org/conda-forge
flake8-import-order                                0.19.2        pyhd8ed1ab_0           20.55 KiB  conda  https://conda.anaconda.org/conda-forge
flake8-quotes                                      3.4.0         pyhd8ed1ab_1           14.43 KiB  conda  https://conda.anaconda.org/conda-forge
importlib-metadata                                 8.8.0         pyhcf101f3_0           33.58 KiB  conda  https://conda.anaconda.org/conda-forge
importlib_resources                                7.1.0         pyhd8ed1ab_0           33.99 KiB  conda  https://conda.anaconda.org/conda-forge
keyutils                                           1.6.3         h86ecc28_0            126.02 KiB  conda  https://conda.anaconda.org/conda-forge
krb5                                               1.22.2        hfd895c2_0              1.45 MiB  conda  https://conda.anaconda.org/conda-forge
lark-parser                                        0.12.0        pyhd8ed1ab_1           84.12 KiB  conda  https://conda.anaconda.org/conda-forge
ld_impl_linux-aarch64                              2.45.1        default_h1979696_102  855.07 KiB  conda  https://conda.anaconda.org/conda-forge
libblas                                            3.11.0        6_haddc8a3_openblas    18.24 KiB  conda  https://conda.anaconda.org/conda-forge
libcblas                                           3.11.0        6_hd72aa62_openblas    18.25 KiB  conda  https://conda.anaconda.org/conda-forge
libcurl                                            8.19.0        hc57f145_0            474.31 KiB  conda  https://conda.anaconda.org/conda-forge
libedit                                            3.1.20250104  pl5321h976ea20_0      144.65 KiB  conda  https://conda.anaconda.org/conda-forge
libev                                              4.33          h31becfc_2            112.42 KiB  conda  https://conda.anaconda.org/conda-forge
libexpat                                           2.7.5         hfae3067_0             74.73 KiB  conda  https://conda.anaconda.org/conda-forge
libffi                                             3.5.2         h376a255_0             54.64 KiB  conda  https://conda.anaconda.org/conda-forge
libgcc                                             15.2.0        h8acb6b2_18           608.30 KiB  conda  https://conda.anaconda.org/conda-forge
libgcc-ng                                          15.2.0        he9431aa_18            26.92 KiB  conda  https://conda.anaconda.org/conda-forge
libgfortran                                        15.2.0        he9431aa_18            26.94 KiB  conda  https://conda.anaconda.org/conda-forge
libgfortran5                                       15.2.0        h1b7bec0_18             1.42 MiB  conda  https://conda.anaconda.org/conda-forge
libgomp                                            15.2.0        h8acb6b2_18           574.28 KiB  conda  https://conda.anaconda.org/conda-forge
liblapack                                          3.11.0        6_h88aeb00_openblas    18.26 KiB  conda  https://conda.anaconda.org/conda-forge
liblzma                                            5.8.3         he30d5cf_0            123.15 KiB  conda  https://conda.anaconda.org/conda-forge
libnghttp2                                         1.68.1        hd3077d7_0            709.89 KiB  conda  https://conda.anaconda.org/conda-forge
libnsl                                             2.0.1         h86ecc28_1             34.01 KiB  conda  https://conda.anaconda.org/conda-forge
libopenblas                                        0.3.32        pthreads_h9d3fd7e_0     4.88 MiB  conda  https://conda.anaconda.org/conda-forge
libsqlite                                          3.53.0        h022381a_0            931.98 KiB  conda  https://conda.anaconda.org/conda-forge
libssh2                                            1.11.1        h18c354c_0            304.10 KiB  conda  https://conda.anaconda.org/conda-forge
libstdcxx                                          15.2.0        hef695bb_18             5.28 MiB  conda  https://conda.anaconda.org/conda-forge
libstdcxx-ng                                       15.2.0        hdbbeba8_18            27.00 KiB  conda  https://conda.anaconda.org/conda-forge
libuuid                                            2.42          h1022ec0_0             42.55 KiB  conda  https://conda.anaconda.org/conda-forge
libuv                                              1.51.0        he30d5cf_1            614.49 KiB  conda  https://conda.anaconda.org/conda-forge
libxcrypt                                          4.4.36        h31becfc_1            111.59 KiB  conda  https://conda.anaconda.org/conda-forge
libzlib                                            1.3.2         hdc9db2a_2             68.20 KiB  conda  https://conda.anaconda.org/conda-forge
mccabe                                             0.7.0         pyhd8ed1ab_1           12.63 KiB  conda  https://conda.anaconda.org/conda-forge
ncurses                                            6.5           ha32ae93_3            904.33 KiB  conda  https://conda.anaconda.org/conda-forge
numpy                                              2.4.3         py312h6615c27_0         7.48 MiB  conda  https://conda.anaconda.org/conda-forge
openssl                                            3.6.2         h546c87b_0              3.53 MiB  conda  https://conda.anaconda.org/conda-forge
packaging                                          26.1          pyhc364b38_0           87.27 KiB  conda  https://conda.anaconda.org/conda-forge
pcre                                               8.45          h01db608_0            244.03 KiB  conda  https://conda.anaconda.org/conda-forge
pycodestyle                                        2.14.0        pyhd8ed1ab_0           34.36 KiB  conda  https://conda.anaconda.org/conda-forge
pydocstyle                                         6.3.0         pyhd8ed1ab_1           39.29 KiB  conda  https://conda.anaconda.org/conda-forge
pyflakes                                           3.4.0         pyhd8ed1ab_0           58.20 KiB  conda  https://conda.anaconda.org/conda-forge
pygments                                           2.20.0        pyhd8ed1ab_0          872.10 KiB  conda  https://conda.anaconda.org/conda-forge
pyparsing                                          3.3.2         pyhcf101f3_0          108.29 KiB  conda  https://conda.anaconda.org/conda-forge
python                                             3.12.13       h91f4b29_0_cpython     13.12 MiB  conda  https://conda.anaconda.org/conda-forge
python-dateutil                                    2.9.0.post0   pyhe01879c_2          227.84 KiB  conda  https://conda.anaconda.org/conda-forge
python_abi                                         3.12          8_cp312                 6.79 KiB  conda  https://conda.anaconda.org/conda-forge
readline                                           8.3           hb682ff5_0            349.22 KiB  conda  https://conda.anaconda.org/conda-forge
rhash                                              1.4.6         h86ecc28_1            202.61 KiB  conda  https://conda.anaconda.org/conda-forge
ros-kilted-ament-cmake                             2.7.5         np2py312h61f2ce4_17    22.87 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-core                        2.7.5         np2py312h61f2ce4_17    44.14 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-cppcheck                    0.19.2        np2py312h61f2ce4_17    24.00 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-cpplint                     0.19.2        np2py312h61f2ce4_17    22.90 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-definitions          2.7.5         np2py312h61f2ce4_17    21.63 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-dependencies         2.7.5         np2py312h61f2ce4_17    22.51 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-include-directories  2.7.5         np2py312h61f2ce4_17    22.04 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-interfaces           2.7.5         np2py312h61f2ce4_17    22.22 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-libraries            2.7.5         np2py312h61f2ce4_17    23.56 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-link-flags           2.7.5         np2py312h61f2ce4_17    21.58 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-export-targets              2.7.5         np2py312h61f2ce4_17    22.38 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-flake8                      0.19.2        np2py312h61f2ce4_17    23.87 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-gen-version-h               2.7.5         np2py312h61f2ce4_17    24.31 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-include-directories         2.7.5         np2py312h61f2ce4_17    21.55 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-libraries                   2.7.5         np2py312h61f2ce4_17    21.23 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-pep257                      0.19.2        np2py312h61f2ce4_17    22.69 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-python                      2.7.5         np2py312h61f2ce4_17    23.71 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-ros-core                    0.14.7        np2py312h61f2ce4_17    26.48 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-target-dependencies         2.7.5         np2py312h61f2ce4_17    23.44 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-test                        2.7.5         np2py312h61f2ce4_17    35.32 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-uncrustify                  0.19.2        np2py312h61f2ce4_17    23.28 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cmake-version                     2.7.5         np2py312h61f2ce4_17    21.40 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cppcheck                          0.19.2        np2py312h61f2ce4_17    29.46 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-cpplint                           0.19.2        np2py312h61f2ce4_17   165.40 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-flake8                            0.19.2        np2py312h61f2ce4_17    27.69 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-index-python                      1.11.3        np2py312h61f2ce4_17    29.91 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-lint                              0.19.2        np2py312h61f2ce4_17    17.19 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-package                           0.17.2        np2py312h61f2ce4_17    41.96 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-pep257                            0.19.2        np2py312h61f2ce4_17    26.38 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ament-uncrustify                        0.19.2        np2py312h61f2ce4_17    66.83 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-fastcdr                                 2.3.5         np2py312h61f2ce4_17    84.59 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rcpputils                               2.13.5        np2py312h61f2ce4_17    79.78 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rcutils                                 6.9.10        np2py312h61f2ce4_17   126.03 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rmw                                     7.8.2         np2py312h61f2ce4_17    95.48 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ros-environment                         4.3.1         np2py312h61f2ce4_17    20.97 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-ros-workspace                           1.0.3         np2py312h61f2ce4_17    34.55 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-adapter                          4.9.6         np2py312h61f2ce4_17    66.53 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-cli                              4.9.6         np2py312h61f2ce4_17    45.32 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-cmake                            4.9.6         np2py312h61f2ce4_17    35.53 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-core-runtime                     0.3.2         np2py312h61f2ce4_17    29.40 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-dynamic-typesupport              0.3.1         np2py312h61f2ce4_17    57.55 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-generator-c                      4.9.6         np2py312h61f2ce4_17    50.92 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-generator-cpp                    4.9.6         np2py312h61f2ce4_17    49.22 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-generator-py                     0.24.2        np2py312h61f2ce4_17    58.51 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-generator-rs                     0.4.11        np2py312h61f2ce4_17    47.12 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-generator-type-description       4.9.6         np2py312h61f2ce4_17    45.98 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-parser                           4.9.6         np2py312h61f2ce4_17    64.69 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-pycommon                         4.9.6         np2py312h61f2ce4_17    26.36 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-runtime-c                        4.9.6         np2py312h61f2ce4_17    85.08 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-runtime-cpp                      4.9.6         np2py312h61f2ce4_17    40.26 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-c                    3.3.3         np2py312h61f2ce4_17    49.74 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-cpp                  3.3.3         np2py312h61f2ce4_17    48.95 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-fastrtps-c           3.8.2         np2py312h61f2ce4_17    50.66 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-fastrtps-cpp         3.8.2         np2py312h61f2ce4_17    52.64 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-interface            4.9.6         np2py312h61f2ce4_17    28.83 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-introspection-c      4.9.6         np2py312h61f2ce4_17    46.49 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rosidl-typesupport-introspection-cpp    4.9.6         np2py312h61f2ce4_17    46.60 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-rpyutils                                0.6.3         np2py312h61f2ce4_17    26.78 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-uncrustify-vendor                       3.1.0         np2py312h61f2ce4_17    22.76 KiB  conda  https://prefix.dev/robostack-kilted
ros-kilted-unique-identifier-msgs                  2.7.0         np2py312h61f2ce4_17    75.41 KiB  conda  https://prefix.dev/robostack-kilted
ros2-distro-mutex                                  0.14.0        kilted_17               2.31 KiB  conda  https://prefix.dev/robostack-kilted
setuptools                                         82.0.1        pyh332efcf_0          624.70 KiB  conda  https://conda.anaconda.org/conda-forge
six                                                1.17.0        pyhe01879c_1           18.02 KiB  conda  https://conda.anaconda.org/conda-forge
snowballstemmer                                    3.0.1         pyhd8ed1ab_0           71.30 KiB  conda  https://conda.anaconda.org/conda-forge
tinyxml2                                           11.0.0        h5ad3122_0            130.19 KiB  conda  https://conda.anaconda.org/conda-forge
tk                                                 8.6.13        noxft_h0dc03b3_103      3.21 MiB  conda  https://conda.anaconda.org/conda-forge
tomli                                              2.4.1         pyhcf101f3_0           21.06 KiB  conda  https://conda.anaconda.org/conda-forge
tzdata                                             2025c         hc9c84f9_1            116.34 KiB  conda  https://conda.anaconda.org/conda-forge
uncrustify                                         0.81.0        h7ac5ae9_2            698.84 KiB  conda  https://conda.anaconda.org/conda-forge
zipp                                               3.23.1        pyhcf101f3_0           23.89 KiB  conda  https://conda.anaconda.org/conda-forge
zstd                                               1.5.7         h85ac4a6_6            600.03 KiB  conda  https://conda.anaconda.org/conda-forge

Environment info

System
------------
       Pixi version: 0.65.0
        TLS backend: rustls
           Platform: linux-aarch64
   Virtual packages: __unix=0=0
                   : __linux=5.15.0=0
                   : __glibc=2.35=0
                   : __archspec=1=cortex_a72
          Cache dir: /home/parallels/.cache/rattler/cache
       Auth storage: /home/parallels/.rattler/credentials.json
   Config locations: No config files found

Global
------------
            Bin dir: /home/parallels/.pixi/bin
    Environment dir: /home/parallels/.pixi/envs
       Manifest dir: /home/parallels/.pixi/manifests/pixi-global.toml

Workspace
------------
               Name: roboplan-ros
            Version: 0.1.0
      Manifest file: /home/parallels/ROS/seabass/roboplan-ros/pixi.toml
       Last updated: 21-04-2026 20:58:18

Environments
------------
        Environment: default
           Features: default
           Channels: conda-forge
   Dependency count: 17
       Dependencies: colcon-common-extensions, colcon-mixin, cmake, clangxx, lld, ninja, mold, sccache, python, gtest, viser, tyro, matplotlib, filelock, nanobind, numpy, lttng-ust
  PyPI Dependencies: pycollada, nodeenv
   Target platforms: linux-64, linux-aarch64
    Prefix location: /home/parallels/ROS/seabass/roboplan-ros/.pixi/envs/default
              Tasks: build, setup-colcon, test, build-symlink, test-result

        Environment: kilted
           Features: kilted, default
           Channels: https://prefix.dev/robostack-kilted, conda-forge
   Dependency count: 18
       Dependencies: ros-kilted-ros-base, colcon-common-extensions, colcon-mixin, cmake, clangxx, lld, ninja, mold, sccache, python, gtest, viser, tyro, matplotlib, filelock, nanobind, numpy, lttng-ust
  PyPI Dependencies: pycollada, nodeenv
   Target platforms: linux-aarch64, linux-64
    Prefix location: /home/parallels/ROS/seabass/roboplan-ros/.pixi/envs/kilted
              Tasks: build, setup-colcon, test, build-symlink, test-result

        Environment: jazzy
           Features: jazzy, default
           Channels: https://prefix.dev/robostack-jazzy, conda-forge
   Dependency count: 18
       Dependencies: ros-jazzy-ros-base, colcon-common-extensions, colcon-mixin, cmake, clangxx, lld, ninja, mold, sccache, python, gtest, viser, tyro, matplotlib, filelock, nanobind, numpy, lttng-ust
  PyPI Dependencies: pycollada, nodeenv
   Target platforms: linux-aarch64, linux-64
    Prefix location: /home/parallels/ROS/seabass/roboplan-ros/.pixi/envs/jazzy
              Tasks: build, setup-colcon, test, build-symlink, test-result

        Environment: humble
           Features: humble, default
           Channels: https://prefix.dev/robostack-humble, conda-forge
   Dependency count: 18
       Dependencies: ros-humble-ros-base, colcon-common-extensions, colcon-mixin, cmake, clangxx, lld, ninja, mold, sccache, python, gtest, viser, tyro, matplotlib, filelock, nanobind, numpy, lttng-ust
  PyPI Dependencies: pycollada, nodeenv
   Target platforms: linux-aarch64, linux-64
    Prefix location: /home/parallels/ROS/seabass/roboplan-ros/.pixi/envs/humble
              Tasks: build, setup-colcon, test, build-symlink, test-result

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    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