Mesa fails to initialize

Hi,

after a recent update my 3d acceleration is broken.

My graphics

             description: VGA compatible controller
             product: HD Graphics 5500
             vendor: Intel Corporation
             physical id: 2
             bus info: pci@0000:00:02.0
             version: 09
             width: 64 bits
             clock: 33MHz
             capabilities: vga_controller bus_master cap_list rom
             configuration: driver=i915 latency=0

eglinfo

EGL client extensions string:
    EGL_EXT_client_extensions, EGL_EXT_device_base, 
    EGL_EXT_device_enumeration, EGL_EXT_device_query, EGL_EXT_explicit_device, 
    EGL_EXT_platform_base, EGL_EXT_platform_device, EGL_EXT_platform_wayland, 
    EGL_EXT_platform_x11, EGL_EXT_platform_xcb, 
    EGL_KHR_client_get_all_proc_addresses, EGL_KHR_debug, 
    EGL_KHR_platform_gbm, EGL_KHR_platform_wayland, EGL_KHR_platform_x11, 
    EGL_MESA_platform_gbm, EGL_MESA_platform_surfaceless

GBM platform:
MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open zink: /usr/lib64/dri/zink_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open kms_swrast: /usr/lib64/dri/kms_swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open zink: /usr/lib64/dri/zink_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open kms_swrast: /usr/lib64/dri/kms_swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open zink: /usr/lib64/dri/zink_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open kms_swrast: /usr/lib64/dri/kms_swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)
eglinfo: eglInitialize failed
Wayland platform:
eglinfo: eglInitialize failed

X11 platform:
libEGL warning: DRI2: failed to authenticate
libEGL warning: MESA-LOADER: failed to open zink: /usr/lib64/dri/zink_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

eglinfo: eglInitialize failed

Surfaceless platform:
libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

eglinfo: eglInitialize failed

Device platform:
Device #0:

EGL device extensions string:
    EGL_EXT_device_drm, EGL_EXT_device_drm_render_node
Platform Device platform:
libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

eglinfo: eglInitialize failed

Device #1:

EGL device extensions string:
    EGL_EXT_device_drm_render_node, EGL_MESA_device_software
Platform Device platform:
libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open zink: /usr/lib64/dri/zink_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

eglinfo: eglInitialize failed

sway

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

00:00:00.034 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to load driver"
libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

00:00:00.048 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to load driver"
libEGL warning: MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: undefined symbol: amdgpu_va_get_start_addr (search paths /usr/lib64/dri, suffix _dri)

00:00:00.063 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to load driver"
00:00:00.063 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "eglInitialize"
00:00:00.063 [ERROR] [wlr] [render/egl.c:264] Failed to initialize EGL
00:00:00.063 [ERROR] [wlr] [render/egl.c:554] Failed to initialize EGL context
00:00:00.063 [ERROR] [wlr] [render/gles2/renderer.c:679] Could not initialize EGL
00:00:00.063 [ERROR] [wlr] [render/wlr_renderer.c:333] Could not initialize renderer
00:00:00.063 [ERROR] [sway/server.c:79] Failed to create renderer

Any help is appreciated.
Thank you

does falling back to the previous version fix it? If so, what are their version numbers?
It would be easier to pinpoint exactly which update caused it to break that way

Thank you
I found the issue, but not a proper resolution.
My LD_LIBRARY_PATH configuration with clearfraction interferes here

# echo $LD_LIBRARY_PATH 
/usr/lib64:/opt/3rd-party/bundles/clearfraction/usr/lib64:/opt/3rd-party/bundles/clearfraction/usr/local/lib64

Somehow the dynamic linker pulls the wrong libraries.

# ldd /usr/lib64/dri/i915_dri.so 
        linux-vdso.so.1 (0x00007fff315e5000)
        libglapi.so.0 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libglapi.so.0 (0x00007f60c4d4c000)
        libdrm.so.2 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm.so.2 (0x00007f60c4d24000)
        libLLVM-17.so => /usr/lib64/libLLVM-17.so (0x00007f60bdca8000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f60bdc74000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00007f60bdc4c000)
        libzstd.so.1 => /usr/lib64/libzstd.so.1 (0x00007f60bdb5c000)
        libX11.so.6 => /opt/3rd-party/bundles/clearfraction/usr/lib64/glibc-hwcaps/x86-64-v3/libX11.so.6.3.0 (0x00007f60bd834000)
        libdrm_radeon.so.1 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm_radeon.so.1 (0x00007f60bd818000)
        libelf.so.1 => /usr/lib64/libelf.so.1 (0x00007f60bd7f8000)
        libdrm_amdgpu.so.1 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm_amdgpu.so.1 (0x00007f60bd7e0000)
        libdrm_nouveau.so.2 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm_nouveau.so.2 (0x00007f60bd7c8000)
        libdrm_intel.so.1 => /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm_intel.so.1 (0x00007f60bd794000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f60bd400000)
        libm.so.6 => /usr/lib64/glibc-hwcaps/x86-64-v3/libm.so.6 (0x00007f60bd6b0000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f60bd3d7000)
        libc.so.6 => /usr/lib64/glibc-hwcaps/x86-64-v3/libc.so.6 (0x00007f60bd000000)
        libffi.so.7 => /usr/lib64/../lib64/libffi.so.7 (0x00007f60bd3ca000)
        libedit.so.0 => /usr/lib64/../lib64/libedit.so.0 (0x00007f60bd37c000)
        libncursesw.so.6 => /usr/lib64/../lib64/libncursesw.so.6 (0x00007f60bd2f4000)
        libxml2.so.2 => /usr/lib64/../lib64/libxml2.so.2 (0x00007f60bcdfc000)
        /usr/lib64/ld-linux-x86-64.so.2 (0x00007f60c74dd000)
        libpciaccess.so.0 => /usr/lib64/libpciaccess.so.0 (0x00007f60bd2dc000)
        liblzma.so.5 => /usr/lib64/../lib64/liblzma.so.5 (0x00007f60bd2a0000)

I expect the dynamic linker to first look through /usr/lib64 , then go lookup within the others

so when setting

 # export LD_LIBRARY_PATH=/usr/lib64

the correct and intended libraries are linked

# ldd /usr/lib64/dri/i915_dri.so 
        linux-vdso.so.1 (0x00007ffeac9a8000)
        libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007f862f038000)
        libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f862f010000)
        libLLVM-17.so => /usr/lib64/libLLVM-17.so (0x00007f8627f94000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f8627f60000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00007f8627f38000)
        libzstd.so.1 => /usr/lib64/libzstd.so.1 (0x00007f8627e48000)
        libX11.so.6 => /usr/lib64/glibc-hwcaps/x86-64-v3/libX11.so.6 (0x00007f8627b20000)
        libdrm_radeon.so.1 => /usr/lib64/libdrm_radeon.so.1 (0x00007f8627b04000)
        libelf.so.1 => /usr/lib64/libelf.so.1 (0x00007f8627ae4000)
        libdrm_amdgpu.so.1 => /usr/lib64/libdrm_amdgpu.so.1 (0x00007f8627acc000)
        libdrm_nouveau.so.2 => /usr/lib64/libdrm_nouveau.so.2 (0x00007f8627ab4000)
        libdrm_intel.so.1 => /usr/lib64/libdrm_intel.so.1 (0x00007f8627a80000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f8627600000)
        libm.so.6 => /usr/lib64/glibc-hwcaps/x86-64-v3/libm.so.6 (0x00007f862799c000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f8627973000)
        libc.so.6 => /usr/lib64/glibc-hwcaps/x86-64-v3/libc.so.6 (0x00007f8627200000)
        libffi.so.7 => /usr/lib64/../lib64/libffi.so.7 (0x00007f8627966000)
        libedit.so.0 => /usr/lib64/../lib64/libedit.so.0 (0x00007f8627918000)
        libncursesw.so.6 => /usr/lib64/../lib64/libncursesw.so.6 (0x00007f8627578000)
        libxml2.so.2 => /usr/lib64/../lib64/libxml2.so.2 (0x00007f8626ffc000)
        /usr/lib64/ld-linux-x86-64.so.2 (0x00007f863179b000)
        libpciaccess.so.0 => /usr/lib64/libpciaccess.so.0 (0x00007f8627900000)
        liblzma.so.5 => /usr/lib64/../lib64/liblzma.so.5 (0x00007f86278c4000)

and mesa initializes again successfully

Why is that?
How is it possible to make sure the correct libraries are linked together?

my current brute force solution is to keep clearfraction LD_LIBRARY_PATH configuration and remove mesa interfering files from clearfraction installation

# cat /etc/tmpfiles.d/mesa_workaround.conf 
r /opt/3rd-party/bundles/clearfraction/usr/lib64/libEGL*
r /opt/3rd-party/bundles/clearfraction/usr/lib64/libdrm*
r /opt/3rd-party/bundles/clearfraction/usr/lib64/libgl*
r /opt/3rd-party/bundles/clearfraction/usr/lib64/libX11*
r /opt/3rd-party/bundles/clearfraction/usr/lib64/glibc-hwcaps/x86-64-v3/libX11*

Thank you

I can’t currently explain why your system prefers the second entry in your LD_LIBRARY_PATH over the first one pointing to /usr/lib64. What should help for your specific problem is to set LD_PRELOAD=/usr/lib64/libdrm_amdgpu.so.1 to force loading the system version of the library providing the missing symbol.