Skip to content

Curiosity demo not runnable in ubuntu vm on arm apple silicone #119

@dsobek

Description

@dsobek

Version or commit hash

rolling

Steps to reproduce issue and expected behavior

I'm currently on an M3 macbook pro running ubuntu 22.04 in a parallels vm and I am unable to get the curiosity demo working.

I was originally able to get this working when the demo was on humble by setting LIBGL_ALWAYS_SOFTWARE=1 to use software rendering, but this no longer works.

Actual behavior

If I don't modify the environment at all environment at all I see an error message similar to gazebosim/gz-sim#2922 (some shader compilation error). When I comment out the environment variables related to nvidia hardware and set LIBGL_ALWAYS_SOFTWARE=1 for software rendering, I get the following warning followed by a segfault:

libEGL warning: Not allowed to force software rendering when API explicitly selects a hardware device.

Backtrace or Console output

Error for software rendering:

curiosity_gui-1   | [gazebo-1] libEGL warning: Not allowed to force software rendering when API explicitly selects a hardware device.
curiosity_gui-1   | [gazebo-1] libEGL warning: pci id for fd 59: 1ab8:0010, driver (null)
curiosity_gui-1   | [gazebo-1]
curiosity_gui-1   | [gazebo-1] Stack trace (most recent call last):
curiosity_gui-1   | [gazebo-1] #31   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb15745af, in QCoreApplication::exec()
curiosity_gui-1   | [gazebo-1] #30   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb156a633, in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
curiosity_gui-1   | [gazebo-1] #29   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb15d7c8b, in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
curiosity_gui-1   | [gazebo-1] #28   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffafff0b67, in g_main_context_iteration
curiosity_gui-1   | [gazebo-1] #27   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffb00537a7, in
curiosity_gui-1   | [gazebo-1] #26   Object "/lib/aarch64-linux-gnu/libglib-2.0.so.0", at 0xffffafff18ab, in
curiosity_gui-1   | [gazebo-1] #25   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb15d880b, in
curiosity_gui-1   | [gazebo-1] #24   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb157033f, in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
curiosity_gui-1   | [gazebo-1] #23   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb156c47f, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
curiosity_gui-1   | [gazebo-1] #22   Object "/lib/aarch64-linux-gnu/libQt5Widgets.so.5", at 0xffffb2b12aa7, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
curiosity_gui-1   | [gazebo-1] #21   Object "/lib/aarch64-linux-gnu/libQt5Core.so.5", at 0xffffb15a2aff, in QObject::event(QEvent*)
curiosity_gui-1   | [gazebo-1] #20   Object "/opt/ros/jazzy/opt/gz_gui_vendor/lib/gz-gui-8/plugins/libMinimalScene.so", at 0xffff9810a4cf, in gz::gui::plugins::RenderWindowItem::Ready()
curiosity_gui-1   | [gazebo-1] #19   Object "/opt/ros/jazzy/opt/gz_gui_vendor/lib/gz-gui-8/plugins/libMinimalScene.so", at 0xffff9810a06f, in gz::gui::plugins::RenderThread::Initialize[abi:cxx11]()
curiosity_gui-1   | [gazebo-1] #18   Object "/opt/ros/jazzy/opt/gz_gui_vendor/lib/gz-gui-8/plugins/libMinimalScene.so", at 0xffff9811b013, in gz::gui::plugins::RenderThreadRhiOpenGL::Initialize[abi:cxx11]()
curiosity_gui-1   | [gazebo-1] #17   Object "/opt/ros/jazzy/opt/gz_gui_vendor/lib/gz-gui-8/plugins/libMinimalScene.so", at 0xffff9810ddbf, in gz::gui::plugins::GzRenderer::Initialize[abi:cxx11](gz::gui::plugins::RenderThreadRhi&)
curiosity_gui-1   | [gazebo-1] #16   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/libgz-rendering8.so.8", at 0xffff9807c31b, in gz::rendering::v8::RenderEngineManager::Engine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
curiosity_gui-1   | [gazebo-1] #15   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/libgz-rendering8.so.8", at 0xffff9807c027, in gz::rendering::v8::RenderEngineManagerPrivate::Engine(EngineInfo, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
curiosity_gui-1   | [gazebo-1] #14   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/libgz-rendering8.so.8", at 0xffff9808688f, in gz::rendering::v8::BaseRenderEngine::Load(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)
curiosity_gui-1   | [gazebo-1] #13   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/gz-rendering-8/engine-plugins/libgz-rendering-ogre2.so", at 0xfffecb6b1f0b, in gz::rendering::v8::Ogre2RenderEngine::LoadImpl(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)
curiosity_gui-1   | [gazebo-1] #12   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/gz-rendering-8/engine-plugins/libgz-rendering-ogre2.so", at 0xfffecb6b138b, in gz::rendering::v8::Ogre2RenderEngine::LoadAttempt()
curiosity_gui-1   | [gazebo-1] #11   Object "/opt/ros/jazzy/opt/gz_rendering_vendor/lib/gz-rendering-8/engine-plugins/libgz-rendering-ogre2.so", at 0xfffecb6aef0b, in gz::rendering::v8::Ogre2RenderEngine::LoadPlugins()
curiosity_gui-1   | [gazebo-1] #10   Object "/opt/ros/jazzy/opt/gz_ogre_next_vendor/lib/libOgreNextMain.so.2.3.3", at 0xfffecb23032f, in Ogre::Root::loadPlugin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, Ogre::StdMap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*)
curiosity_gui-1   | [gazebo-1] #9    Object "/opt/ros/jazzy/opt/gz_ogre_next_vendor/lib/libOgreNextMain.so.2.3.3", at 0xfffecb22e93f, in Ogre::Root::installPlugin(Ogre::Plugin*, Ogre::StdMap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*)
curiosity_gui-1   | [gazebo-1] #8    Object "/opt/ros/jazzy/opt/gz_ogre_next_vendor/lib/OGRE-Next/RenderSystem_GL3Plus.so", at 0xfffecac723ff, in Ogre::GL3PlusPlugin::install(Ogre::StdMap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*)
curiosity_gui-1   | [gazebo-1] #7    Object "/opt/ros/jazzy/opt/gz_ogre_next_vendor/lib/OGRE-Next/RenderSystem_GL3Plus.so", at 0xfffecac75307, in Ogre::GL3PlusRenderSystem::GL3PlusRenderSystem(Ogre::StdMap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*)
curiosity_gui-1   | [gazebo-1] #6    Object "/opt/ros/jazzy/opt/gz_ogre_next_vendor/lib/OGRE-Next/RenderSystem_GL3Plus.so", at 0xfffecac6a70f, in
curiosity_gui-1   | [gazebo-1] #5    Object "/lib/aarch64-linux-gnu/libEGL_mesa.so.0", at 0xfffecabb501b, in
curiosity_gui-1   | [gazebo-1] #4    Object "/lib/aarch64-linux-gnu/libEGL_mesa.so.0", at 0xfffecabc6cc3, in
curiosity_gui-1   | [gazebo-1] #3    Object "/lib/aarch64-linux-gnu/libEGL_mesa.so.0", at 0xfffecabc7b27, in
curiosity_gui-1   | [gazebo-1] #2    Object "/lib/aarch64-linux-gnu/libEGL_mesa.so.0", at 0xfffecabc6477, in
curiosity_gui-1   | [gazebo-1] #1    Object "/lib/aarch64-linux-gnu/libgallium-25.0.7-0ubuntu0.24.04.2.so", at 0xffff8de2152b, in driCreateNewScreen3
curiosity_gui-1   | [gazebo-1] #0    Object "/lib/aarch64-linux-gnu/libgallium-25.0.7-0ubuntu0.24.04.2.so", at 0xffff8de27300, in
curiosity_gui-1   | [gazebo-1] Segmentation fault (Address not mapped to object [0x8])
curiosity_gui-1   | [INFO] [ros2-7]: process has finished cleanly [pid 201]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions