Omni.isaac.lula extension failed to load

I need to implement my own bag file recorder using rosbag2_py API. But there was some error during app startup.

I attach the log and a minimal code to reproduce the issue.
conflict.log (30.4 KB)
test_conflict.py.txt (107 Bytes)

Here’s my own investigation:

linh@ubuntu2204:~$ ldd /home/linh/.local/share/ov/pkg/isaac-sim-4.1.0/exts/omni.isaac.lula/pip_prebundle/_lula_libs/liblula_util.so

libyaml-cpp.so.0.7 => /home/linh/.local/share/ov/pkg/isaac-sim-4.1.0/exts/omni.isaac.lula/pip_prebundle/_lula_libs/libyaml-cpp.so.0.7 (0x0000732c6e10b000)

linh@ubuntu2204:~$ ldd /opt/ros/humble/lib/librosbag2_cpp.so

libyaml-cpp.so.0.7 => /lib/x86_64-linux-gnu/libyaml-cpp.so.0.7 (0x00007e521925d000)

linh@ubuntu2204:~$ nm /home/linh/.local/share/ov/pkg/isaac-sim-4.1.0/exts/omni.isaac.lula/pip_prebundle/_lula_libs/libyaml-cpp.so.0.7 | grep _ZN4YAML8LoadFileERKSs
000000000004ba70 T _ZN4YAML8LoadFileERKSs
0000000000020c1d t _ZN4YAML8LoadFileERKSs.cold

It looks like the 2 libraries are linked against different libyaml-cpp, leading to symbol name conflict even thought the version of libyaml-cpp are the same.

How do i solve this conflict? Right now there is no need for me to use the lula module and the simulation works fine without it. But I rather fix it before it actually cause me any trouble.

Thanks.

Thanks for bringing this up. I am able to replicate your issue. I have passed this to our internal team for further investigation.

The root cause of the conflict is a difference in compilation options related to GCC’s handling of the C++ string ABI.

Isaac Sim and Omniverse follow USD, which follows the CY2022 version of the VFX Platform Standard, which requires that _GLIBCXX_USE_CXX11_ABI=0 be set. This differs from the default on Ubuntu. (As an aside, VFX Platform matches the Ubuntu default starting with CY2023, so it’s likely that Omniverse and Isaac Sim will as well starting in some future release.)

Unfortunately, the only workaround for now is to compile rosbag2_py and its dependencies from source with -D_GLIBCXX_USE_CXX11_ABI=0.