Bug#1082946: libvulkan1:i386: Fails to load radeon driver using i386 on amd64, despite icd and .so being there
Package: libvulkan1
Version: 1.3.290.0-1
Severity: important
X-Debbugs-Cc: witold.baryluk@gmail.com
Dear Maintainer,
user@debian:~$ dpkg -l | grep vulkan
ii libvulkan-dev:amd64 1.3.290.0-1 amd64 Vulkan loader library -- development files
ii libvulkan-dev:i386 1.3.290.0-1 i386 Vulkan loader library -- development files
ii libvulkan1:amd64 1.3.290.0-1 amd64 Vulkan loader library
ii libvulkan1:i386 1.3.290.0-1 i386 Vulkan loader library
ii mesa-vulkan-drivers:amd64 24.2.2-1 amd64 Mesa Vulkan graphics drivers
ii mesa-vulkan-drivers:i386 24.2.2-1 i386 Mesa Vulkan graphics drivers
ii vulkan-tools:i386 1.3.290.0+dfsg1-1 i386 Miscellaneous Vulkan utilities
ii vulkan-validationlayers:amd64 1.3.290.0-1 amd64 Vulkan validation layers
ii vulkan-validationlayers:i386 1.3.290.0-1 i386 Vulkan validation layers
Notice, vulkan-tools is i386. This is on purpose as I want to test
32-bit libraries. (I cannot coinstall vulkan-tools:i386 and
vulkan-tools:amd64, something like mesa-utils-bin:i386
mesa-utils-bin:amd64 split but for vulkan-tools will be appreciated).
user@debian:~$ vulkaninfo --summary
ERROR: [Loader Message] Code 0 : vkCreateInstance: Found no drivers!
Cannot create Vulkan instance.
This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan.
ERROR at ./vulkaninfo/./vulkaninfo.h:456:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
user@debian:~$ vkcube
vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extension.
Do you have a compatible Vulkan installable client driver (ICD) installed?
Please look at the Getting Started guide for additional information.
strace
...
...
openat(AT_FDCWD, "/lib/i386-linux-gnu/libvulkan.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=570992, ...}) = 0
mmap2(NULL, 569760, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xf7b03000
mmap2(0xf7b08000, 299008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x5000) = 0xf7b08000
mmap2(0xf7b51000, 245760, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x4e000) = 0xf7b51000
mmap2(0xf7b8d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x8a000) = 0xf7b8d000
close(4) = 0
mprotect(0xf7b8d000, 4096, PROT_READ) = 0
munmap(0xf7f32000, 318866) = 0
access("/home/user/.local/share/vulkan/loader_settings.d/vk_loader_settings.json", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/vulkan/loader_settings.d/vk_loader_settings.json", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/.config/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/xdg/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=3, ...}) = 0
getdents64(4, 0x572e213c /* 2 entries */, 32768) = 48
close(4) = 0
...
openat(AT_FDCWD, "/etc/vulkan/icd.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=3, ...}) = 0
getdents64(4, 0x572e493c /* 2 entries */, 32768) = 48
close(4) = 0
...
openat(AT_FDCWD, "/usr/share/vulkan/icd.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=367, ...}) = 0
getdents64(4, 0x572e493c /* 14 entries */, 32768) = 584
close(4) = 0
...
openat(AT_FDCWD, "/etc/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=3, ...}) = 0
getdents64(4, 0x572e69cc /* 2 entries */, 32768) = 48
close(4) = 0
...
openat(AT_FDCWD, "/usr/share/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4
statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=159, ...}) = 0
getdents64(4, 0x572e69cc /* 7 entries */, 32768) = 272
close(4) = 0
openat(AT_FDCWD, "/var/lib/snapd/desktop/vulkan/implicit_layer.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
readlink("/proc/self/exe", "/usr/bin/vkcube", 1024) = 15
statx(1, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFCHR|0620, stx_size=0, ...}) = 0
write(1, "vkEnumerateInstanceExtensionProp"..., 84vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extension.
) = 84
write(1, "\n", 1
) = 1
write(1, "Do you have a compatible Vulkan "..., 145Do you have a compatible Vulkan installable client driver (ICD) installed?
Please look at the Getting Started guide for additional information.
) = 145
exit_group(1) = ?
but
user@debian:~$ cat /usr/share/vulkan/icd.d/radeon_icd.i686.json
{
"ICD": {
"api_version": "1.3.289",
"library_path": "/usr/lib/i386-linux-gnu/libvulkan_radeon.so"
},
"file_format_version": "1.0.0"
}user@debian:~$
user@debian:~$ ldd /usr/lib/i386-linux-gnu/libvulkan_radeon.so
linux-gate.so.1 (0xf7ee9000)
libLLVM-18.so.18.1 => /lib/i386-linux-gnu/libLLVM-18.so.18.1 (0xeecb1000)
libdrm_amdgpu.so.1 => /lib/i386-linux-gnu/libdrm_amdgpu.so.1 (0xeeca4000)
libelf.so.1 => /lib/i386-linux-gnu/libelf.so.1 (0xeec84000)
libxcb-dri3.so.0 => /lib/i386-linux-gnu/libxcb-dri3.so.0 (0xeec7d000)
libwayland-client.so.0 => /lib/i386-linux-gnu/libwayland-client.so.0 (0xeec6e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xeec51000)
libzstd.so.1 => /lib/i386-linux-gnu/libzstd.so.1 (0xeeb8f000)
libxcb.so.1 => /lib/i386-linux-gnu/libxcb.so.1 (0xeeb61000)
libX11-xcb.so.1 => /lib/i386-linux-gnu/libX11-xcb.so.1 (0xeeb5c000)
libxcb-present.so.0 => /lib/i386-linux-gnu/libxcb-present.so.0 (0xeeb55000)
libxcb-xfixes.so.0 => /lib/i386-linux-gnu/libxcb-xfixes.so.0 (0xeeb4a000)
libxcb-sync.so.1 => /lib/i386-linux-gnu/libxcb-sync.so.1 (0xeeb41000)
libxcb-randr.so.0 => /lib/i386-linux-gnu/libxcb-randr.so.0 (0xeeb2e000)
libxcb-shm.so.0 => /lib/i386-linux-gnu/libxcb-shm.so.0 (0xeeb29000)
libxshmfence.so.1 => /lib/i386-linux-gnu/libxshmfence.so.1 (0xeeb24000)
libdrm.so.2 => /lib/i386-linux-gnu/libdrm.so.2 (0xeeb0a000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xeeade000)
libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xee876000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xee76a000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xee730000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xee4fd000)
libffi.so.8 => /lib/i386-linux-gnu/libffi.so.8 (0xee4f3000)
libedit.so.2 => /lib/i386-linux-gnu/libedit.so.2 (0xee4bb000)
libz3.so.4 => /lib/i386-linux-gnu/libz3.so.4 (0xecc38000)
libtinfo.so.6 => /lib/i386-linux-gnu/libtinfo.so.6 (0xecc0a000)
libxml2.so.2 => /lib/i386-linux-gnu/libxml2.so.2 (0xeca2e000)
/lib/ld-linux.so.2 (0xf7eeb000)
libXau.so.6 => /lib/i386-linux-gnu/libXau.so.6 (0xeca29000)
libXdmcp.so.6 => /lib/i386-linux-gnu/libXdmcp.so.6 (0xeca22000)
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xeca0a000)
libicuuc.so.72 => /lib/i386-linux-gnu/libicuuc.so.72 (0xec800000)
liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xec7ca000)
libmd.so.0 => /lib/i386-linux-gnu/libmd.so.0 (0xec7b8000)
libicudata.so.72 => /lib/i386-linux-gnu/libicudata.so.72 (0xea9e6000)
user@debian:~$
I am not sure what linux-gate.so.1 is, maybe it is vdso stuff.
But libvulkan is not even attempting to read radeon_icd.i686.json or
dlopen /usr/lib/i386-linux-gnu/libvulkan_radeon.so so that is probably
not a problem.
PS.
user@debian:~$ ls -l /usr/share/vulkan/implicit_layer.d
total 5
-rw-r--r-- 1 root root 600 Sep 3 00:31 libMangoApp.x86_64.json
-rw-r--r-- 1 root root 611 Sep 3 00:31 MangoHud.x86_64.json
-rw-r--r-- 1 root root 606 Sep 3 00:31 MangoHud.x86.json
-rw-r--r-- 1 root root 574 Feb 10 2024 vkBasalt.json
-rw-r--r-- 1 root root 473 Sep 5 22:28 VkLayer_MESA_device_select.json
user@debian:~$
but that does not to be important either (libvulkan is not opening of
these json files).
I have same issue with vulkaninfo
64-bit version of vulkaninfo and vkcube work perfectly fine:
openat(AT_FDCWD, "/usr/share/vulkan/icd.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=367, ...}) = 0
getdents64(4, 0x55fc72361f70 /* 14 entries */, 32768) = 584
access("/usr/share/vulkan/icd.d/.", F_OK) = 0
access("/usr/share/vulkan/icd.d/..", F_OK) = 0
access("/usr/share/vulkan/icd.d/intel_hasvk_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/intel_hasvk_icd.x86_64.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/intel_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/intel_icd.x86_64.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/lvp_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/lvp_icd.x86_64.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/nouveau_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/nouveau_icd.x86_64.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/radeon_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/radeon_icd.x86_64.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/virtio_icd.i686.json", F_OK) = 0
access("/usr/share/vulkan/icd.d/virtio_icd.x86_64.json", F_OK) = 0
getdents64(4, 0x55fc72361f70 /* 0 entries */, 32768) = 0
close(4) = 0
openat(AT_FDCWD, "/var/lib/snapd/desktop/vulkan/icd.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/vulkan/icd.d/intel_hasvk_icd.i686.json", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=167, ...}) = 0
read(4, "{\n \"ICD\": {\n \"api_vers"..., 4096) = 167
read(4, "", 4096) = 0
lseek(4, 0, SEEK_CUR) = 167
lseek(4, 0, SEEK_SET) = 0
read(4, "{\n \"ICD\": {\n \"api_vers"..., 4096) = 167
close(4) = 0
openat(AT_FDCWD, "/usr/lib/i386-linux-gnu/libvulkan_intel_hasvk.so", O_RDONLY|O_CLOEXEC) = 4
...
...
Regards,
Witold
-- System Information:
Debian Release: trixie/sid
APT prefers trixie
APT policy: (500, 'trixie'), (500, 'testing-debug'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.11.0 (SMP w/32 CPU threads; PREEMPT)
Kernel taint flags: TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages libvulkan1:i386 depends on:
ii libc6 2.40-2
Versions of packages libvulkan1:i386 recommends:
ii mesa-vulkan-drivers [vulkan-icd] 24.2.2-1
libvulkan1:i386 suggests no packages.
-- no debconf information
Reply to: