robotology / gz-sim-yarp-plugins

YARP plugins for Modern Gazebo (gz-sim).
BSD 3-Clause "New" or "Revised" License
9 stars 2 forks source link

LaserTest and CameraTest are crashing in CI when using conda-forge dependencies on Linux #196

Closed traversaro closed 3 months ago

traversaro commented 3 months ago

On WSL, the test are crashing on exit if LIBGL_ALWAYS_SOFTWARE=true is not set, probably something related to d3d12 or the intel or nvidia driver (as forcing the use of nvidia GPU via export MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA does not change anything).

Instead, on CI the test are crashing with:

 [Wrn] [Ogre2RenderEngine.cc:551] Unable to open display: . Trying to run in headless mode.
[Err] [Ogre2RenderEngine.cc:752] Unable to load Ogre Plugin[/home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/RenderSystem_GL3Plus]. Rendering will not be possible.Make sure you have installed OGRE properly.
[Err] [Ogre2RenderEngine.cc:803] unable to find OpenGL 3+ Rendering Subsystem. OGRE is probably installed incorrectly. Double check the OGRE cmake output, and make sure OpenGL is enabled.

I have no idea why we do not have the same problem in apt.

traversaro commented 3 months ago

In apt the following message is actually run:

 [Wrn] [Ogre2RenderEngine.cc:548] Unable to open display: . Trying to run in headless mode.
[Dbg] [SystemManager.cc:77] Loaded system [gzyarp::RobotInterface] for entity [8]

perhaps we are missing some EGL driver to be installed in conda-forge?

traversaro commented 3 months ago

The related code i https://github.com/gazebosim/gz-rendering/blob/64820c0f3b389f32ec929130c8486c42df43e9e5/ogre2/src/Ogre2RenderEngine.cc#L550-L552 .

traversaro commented 3 months ago

Given that the error is [Err] [Ogre2RenderEngine.cc:752] Unable to load Ogre Plugin[/home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/RenderSystem_GL3Plus]. Rendering will not be possible.Make sure you have installed OGRE properly., I added the ldd $CONDA_PREFIX/lib/OGRE-Next/RenderSystem_GL3Plus.so in CI to understand if there is some library missing.

traversaro commented 3 months ago

Given that the error is [Err] [Ogre2RenderEngine.cc:752] Unable to load Ogre Plugin[/home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/RenderSystem_GL3Plus]. Rendering will not be possible.Make sure you have installed OGRE properly., I added the ldd $CONDA_PREFIX/lib/OGRE-Next/RenderSystem_GL3Plus.so in CI to understand if there is some library missing.

Nothing strange:

    linux-vdso.so.1 (0x00007ffcd09f0000)
    libOgreNextMain.so.2.3.3 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../libOgreNextMain.so.2.3.3 (0x00007facf1800000)
    libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007facf1e8c000)
    libX11.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../libX11.so.6 (0x00007facf16bb000)
    libXrandr.so.2 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../libXrandr.so.2 (0x00007facf1e7e000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007facf1e79000)
    libstdc++.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../libstdc++.so.6 (0x00007facf14d8000)
    libgcc_s.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../libgcc_s.so.1 (0x00007facf1e58000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007facf1200000)
    libXt.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libXt.so.6 (0x00007facf146b000)
    libXaw.so.7 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libXaw.so.7 (0x00007facf1189000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007facf1e51000)
    libfreeimage.so.3 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libfreeimage.so.3 (0x00007facf10a2000)
    libzzip-0.so.13 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libzzip-0.so.13 (0x00007facf1e47000)
    libz.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libz.so.1 (0x00007facf1450000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007facf0fbb000)
    libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007facf0f03000)
    libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007facf0ecf000)
    libxcb.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libxcb.so.1 (0x00007facf0ea2000)
    libXext.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libXext.so.6 (0x00007facf143b000)
    libXrender.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././libXrender.so.1 (0x00007facf142e000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007facf0e9d000)
    /lib64/ld-linux-x86-64.so.2 (0x00007facf1fe0000)
    libSM.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libSM.so.6 (0x00007facf0e92000)
    libICE.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libICE.so.6 (0x00007facf0e74000)
    libXmu.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libXmu.so.6 (0x00007facf0e59000)
    libXpm.so.4 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libXpm.so.4 (0x00007facf0e45000)
    libjpeg.so.8 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libjpeg.so.8 (0x00007facf0d5f000)
    libtiff.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libtiff.so.6 (0x00007facf0ccc000)
    libpng16.so.16 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libpng16.so.16 (0x00007facf0c8f000)
    libopenjp2.so.7 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libopenjp2.so.7 (0x00007facf0c25000)
    libwebpmux.so.3 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libwebpmux.so.3 (0x00007facf0c18000)
    libwebp.so.7 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libwebp.so.7 (0x00007facf0b5d000)
    libjxrglue.so.0 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libjxrglue.so.0 (0x00007facf0b36000)
    libraw.so.23 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libraw.so.23 (0x00007facf0a13000)
    libOpenEXR.so.31 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libOpenEXR.so.31 (0x00007facf0600000)
    libIex.so.31 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libIex.so.31 (0x00007facf0991000)
    libImath.so.29 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libImath.so.29 (0x00007facf093e000)
    libXau.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libXau.so.6 (0x00007facf05fb000)
    libXdmcp.so.6 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/../././libXdmcp.so.6 (0x00007facf05f3000)
    libuuid.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libuuid.so.1 (0x00007facf05ea000)
    libzstd.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libzstd.so.1 (0x00007facf04d6000)
    liblzma.so.5 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././liblzma.so.5 (0x00007facf04ad000)
    libLerc.so.4 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libLerc.so.4 (0x00007facf03ea000)
    libdeflate.so.0 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libdeflate.so.0 (0x00007facf03d3000)
    libsharpyuv.so.0 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libsharpyuv.so.0 (0x00007facf03c7000)
    libjpegxr.so.0 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libjpegxr.so.0 (0x00007facf037f000)
    liblcms2.so.2 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././liblcms2.so.2 (0x00007facf0316000)
    libgomp.so.1 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libgomp.so.1 (0x00007facf02d5000)
    libIlmThread.so.31 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libIlmThread.so.31 (0x00007facf02ca000)
    libOpenEXRCore.so.31 => /home/runner/micromamba/envs/gzyarppluginsdev/lib/OGRE-Next/.././././libOpenEXRCore.so.31 (0x00007facf0000000)

I wonder if it could make sense to get rid of CDTs also in ogre-next and try again.

traversaro commented 3 months ago

I was able to reproduce the error locally by setting export DISPLAY=:16, to simulate the failure in opening the X display.

traversaro commented 3 months ago

The problem seems related to conda-forge packaging of gz-sim/gz-rendering/ogre-next, not the specific gz-sim-yarp-plugins repo: https://github.com/conda-forge/gz-sim-feedstock/issues/62 .

traversaro commented 3 months ago

The problem seems related to conda-forge packaging of gz-sim/gz-rendering/ogre-next, not the specific gz-sim-yarp-plugins repo: conda-forge/gz-sim-feedstock#62 .

This was fixed by https://github.com/conda-forge/ogre-next-feedstock/pull/20 (we verified this in https://github.com/robotology/gz-sim-yarp-plugins/pull/199), as long as we use a new enough ogre-next package, everything should work fine.

traversaro commented 3 months ago

Fixed by https://github.com/conda-forge/ogre-next-feedstock/pull/20 .