550.40.07 - The NVIDIA driver was unable to open 'libnvidia-glvkspirv

Greetings.
Using 550-beta driver. Arch Linux. Using aur package for 550-beta-dkms.
Running electron app with --ozone-platform-hint=auto flag ( vesktop for example ), I got this error in my terminal:

Summary

vesktop --ozone-platform-hint=auto
[arRPC > ipc] listening at /run/user/1002/discord-ipc-0
[arRPC > websocket] listening on 6463
[arRPC > process] started
The NVIDIA driver was unable to open ‘libnvidia-glvkspirv.so.550.40.07’. This library is required at run time.

Warning: terminator_CreateInstance: Failed to CreateInstance in ICD 0. Skipping ICD.
Warning: terminator_CreateInstance: Found no drivers!
Warning: vkCreateInstance failed with VK_ERROR_INCOMPATIBLE_DRIVER
at CheckVkSuccessImpl (…/…/third_party/dawn/src/dawn/native/vulkan/VulkanError.cpp:101)
at CreateVkInstance (…/…/third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:493)
at Initialize (…/…/third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:379)
at Create (…/…/third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:301)
at operator() (…/…/third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:556)

find / -type f -name “libnvidia-glvkspirv*” shows that libnvidia-glvkspirv exist in /usr/lib/libnvidia-glvkspirv.so.550.40.07

Still happens at 550.54.14-1. I have this files installed at:
/usr/lib/libnvidia-glvkspirv.so.550.54.14 /usr/lib32/libnvidia-glvkspirv.so.550.54.14 Here for example brave error when i’m entering in brave://gpu:

Summary

The NVIDIA driver was unable to open ‘libnvidia-glvkspirv.so.550.54.14’. This library is required at run time.

Warning: terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD libGLX_nvidia.so.0. Skipping this driver.
Error: Loader Message: setup_loader_term_phys_devs: Failed to detect any valid GPUs in the current config
Warning: vkEnumeratePhysicalDevices
at GatherPhysicalDevices (…/…/third_party/dawn/src/dawn/native/vulkan/VulkanInfo.cpp:148)

I got errors about missing glvkspirv in brave, plasma 6 and probably more. LD_PRELOAD=/usr/lib/libnvidia-glvkspirv.so.550.54.14 brave seems fix issue in brave atleast. Any suggestion why nvidia driver cannot find/load this?
nvidia-bug-report.log.gz (944.5 KB)

Hello,
I got a similar error after updating the driver to 550.54.14 on Debian 12 “bookworm” when running applications with WINE (currently 9.3).
The exact message is

The NVIDIA driver was unable to open ‘libnvidia-glvkspirv.so.550.54.14’. This library is required at run time.

I found libnvidia-glvkspirv.so.550.54.14 under /usr/lib/i386-linux-gnu and /usr/lib/x86_64-linux-gnu (I use both 32 and 64-bit architectures).

LD_PRELOAD didn’t work for me because WINE mixes 32-bit and 64-bit binaries calls. I either got WRONG CLASS ELF32 or WRONG CLASS ELF64 when I pointed LD_PRELOAD to the i386-linux-gnu or x86_64-linux-gnu files.

My solution was to create symlinks in those two directories, mimicking existing libnvidia libraries:

sudo ln -s libnvidia-glvkspirv.so.550.54.14 libnvidia-glvkspirv.so.1
sudo ln -s libnvidia-glvkspirv.so.1 libnvidia-glvkspirv.so

This fixed the issue for me with mixed architecture.

Regards.

So you put symlinks to apps directory, right?
I hope nvidia devs would look at this one day.

Hello,

No, I put the symlinks in /usr/lib/i386-linux-gnu and /usr/lib/x86-linux-gnu, alongside the original *.so.550.54.14 files.

In your case I guess it should be in /usr/lib and /usr/lib32.

This way it works globally for every application. It will break again on the next driver update and will need to be redone, though, until NVidia fixes it.

Regards.

Hello,

Still happens with driver 550.78.

The symlink workaround doesn’t seem to work anymore.

Regards.