tl;dr
At some point either /etc/OpenCL/vendors moved to /usr/share/OpenCL/vendors AND/OR ocl_icd_loader changed how it looks for icds, breaking Rusticl on my system. Creating a symlink at /etc/OpenCL to /usr/share/OpenCL seems to have fixed the issue for me, but I’m wondering how this happened to begin with and if I’m inviting any trouble with my quickfix.
The Full Story:
I’m not sure if it was the most recent update or not, but at some point Mesa-libRusticlOpenCL broke for me. I first noticed it when digiKam (my primary reason for using Rusticl) started segfaulting on start.
inxi -Fxz and zypper output
Click for details
user@host ~ $ inxi -Fxz
System:
Kernel: 7.2.6-1-default arch: x86_64 bits: 64 compiler: gcc v: 16.2.0
Desktop: KDE Plasma v: 6.7.5 Distro: openSUSE Tumbleweed 20260923
Machine:
Type: Desktop System: ASRock product: B850 Challenger WiFi v: N/A
serial: <superuser required>
Mobo: ASRock model: B850 Challenger WiFi serial: <superuser required>
Firmware: UEFI vendor: American Megatrends LLC. v: 4.41 date: 06/02/2026
Battery:
Device-1: hidpp_battery_0 model: Logitech MX Anywhere 3 charge: 60%
status: discharging
CPU:
Info: 8-core model: AMD Ryzen 7 9700X bits: 64 type: MT MCP arch: Zen 5
rev: 0 cache: L1: 640 KiB L2: 8 MiB L3: 32 MiB
Speed (MHz): avg: 605 min/max: 605/5582 boost: enabled cores: 1: 605
2: 605 3: 605 4: 605 5: 605 6: 605 7: 605 8: 605 9: 605 10: 605 11: 605
12: 605 13: 605 14: 605 15: 605 16: 605 bogomips: 121364
Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a
ssse3 svm
Graphics:
Device-1: Advanced Micro Devices [AMD/ATI] Navi 22 [Radeon RX 6700/6700
XT/6750 XT / 6800M/6850M XT] vendor: ASRock driver: amdgpu v: kernel
arch: RDNA-2 bus-ID: 03:00.0
Device-2: Advanced Micro Devices [AMD/ATI] Granite Ridge [Radeon Graphics]
vendor: ASRock driver: amdgpu v: kernel arch: RDNA-2 bus-ID: 12:00.0
temp: 39.0 C
Device-3: Elgato Systems GmbH Cam Link 4K
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB bus-ID: 4-1.2:3
Display: wayland server: X.org v: 1.21.1.24 with: Xwayland v: 24.1.13
compositor: kwin_wayland driver: X: loaded: modesetting unloaded: vesa
dri: radeonsi gpu: amdgpu resolution: 1920x1080~60Hz
API: EGL v: 1.5 drivers: radeonsi,swrast platforms:
active: gbm,wayland,x11,surfaceless,device inactive: N/A
API: OpenGL v: 4.6 vendor: amd mesa v: 26.2.3 glx-v: 1.4
direct-render: yes renderer: AMD Radeon RX 6700 XT (radeonsi navi22 ACO DRM
3.64 7.2.6-1-default)
API: Vulkan v: 1.4.357 drivers: radv,llvmpipe surfaces: N/A devices: 3
Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
de: kscreen-console,kscreen-doctor wl: wayland-info
x11: xdpyinfo, xprop, xrandr
Audio:
Device-1: Advanced Micro Devices [AMD/ATI] Navi 21/23 HDMI/DP Audio
driver: snd_hda_intel v: kernel bus-ID: 03:00.1
Device-2: Advanced Micro Devices [AMD/ATI] Radeon High Definition Audio
driver: snd_hda_intel v: kernel bus-ID: 12:00.1
Device-3: Advanced Micro Devices [AMD] Ryzen HD Audio vendor: ASRock
driver: snd_hda_intel v: kernel bus-ID: 12:00.6
Device-4: Elgato Systems GmbH Cam Link 4K
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB bus-ID: 4-1.2:3
API: ALSA v: k7.2.6-1-default status: kernel-api
Server-1: PipeWire v: 1.6.9 status: active
Network:
Device-1: Realtek RTL8922AE 802.11be PCIe Wireless Network Adapter
vendor: AzureWave driver: rtw89_8922ae v: kernel port: d000 bus-ID: 0e:00.0
IF: wlp14s0 state: down mac: <filter>
Device-2: Realtek RTL8125 2.5GbE vendor: ASRock driver: r8169 v: kernel
port: c000 bus-ID: 0f:00.0
IF: enp15s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Bluetooth:
Device-1: IMC Networks Bluetooth Radio driver: btusb v: 0.8 type: USB
bus-ID: 6-9:3
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.3
lmp-v: 12
Drives:
Local Storage: total: 9.14 TiB used: 1.8 TiB (19.6%)
ID-1: /dev/nvme0n1 vendor: Seagate model: XPG MARS 980 BLADE
size: 1.86 TiB temp: 35.9 C
ID-2: /dev/sda vendor: Seagate model: ST8000DM004-2U9188 size: 7.28 TiB
Partition:
ID-1: / size: 1.8 TiB used: 281.83 GiB (15.3%) fs: btrfs dev: /dev/nvme0n1p3
ID-2: /boot/efi size: 3.99 GiB used: 840.3 MiB (20.6%) fs: vfat
dev: /dev/nvme0n1p1
ID-3: /home size: 1.8 TiB used: 281.83 GiB (15.3%) fs: btrfs
dev: /dev/nvme0n1p3
ID-4: /opt size: 1.8 TiB used: 281.83 GiB (15.3%) fs: btrfs
dev: /dev/nvme0n1p3
ID-5: /var size: 1.8 TiB used: 281.83 GiB (15.3%) fs: btrfs
dev: /dev/nvme0n1p3
Swap:
ID-1: swap-1 type: partition size: 64 GiB used: 0 KiB (0.0%)
dev: /dev/nvme0n1p2
Sensors:
System Temperatures: cpu: 42.5 C mobo: N/A
Fan Speeds (rpm): N/A
GPU: device: amdgpu temp: 38.0 C device: amdgpu temp: 39.0 C fan: 0
Info:
Memory: total: 32 GiB note: est. available: 30.46 GiB used: 4.94 GiB (16.2%)
Processes: 456 Uptime: 0h 13m Init: systemd
Packages: 31 note: see --rpm Compilers: N/A Shell: Zsh v: 5.9 inxi: 3.3.41
and
user@host ~ $ zypper se -v opencl
Loading repository data...
Reading installed packages...
S | Name | Type | Version | Arch | Repository
---+---------------------------------+---------+--------------------+--------+----------------------
| armnn-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: armnn-opencl
| armnn-opencl-devel | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: armnn-opencl-devel
| caja-extension-opencloud | package | 1.0.0-1.3 | noarch | Main Repository (OSS)
name: caja-extension-opencloud
| intel-opencl | package | 26.27.39122.11-1.1 | x86_64 | Main Repository (OSS)
name: intel-opencl
| intel-opencl-devel | package | 26.27.39122.11-1.1 | x86_64 | Main Repository (OSS)
name: intel-opencl-devel
| libarmnn36-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: libarmnn36-opencl
| libarmnnBasePipeServer36-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: libarmnnBasePipeServer36-opencl
| libarmnnTestUtils3-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: libarmnnTestUtils3-opencl
| libggml-opencl | package | 0.4.1-1.1 | x86_64 | Main Repository (OSS)
name: libggml-opencl
| libopencl-clang17 | package | 2.38.2-2.2 | x86_64 | Main Repository (OSS)
name: libopencl-clang17
i | libOpenCL1 | package | 2.3.4-2.1 | x86_64 | Main Repository (OSS)
name: libOpenCL1
| libOpenCL1-32bit | package | 2.3.4-2.1 | x86_64 | Main Repository (OSS)
name: libOpenCL1-32bit
| libopencloudsync-devel | package | 4.0.0-1.1 | x86_64 | Main Repository (OSS)
name: libopencloudsync-devel
| libopencloudsync0 | package | 4.0.0-1.1 | x86_64 | Main Repository (OSS)
name: libopencloudsync0
| libtimelineDecoder36-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: libtimelineDecoder36-opencl
| libtimelineDecoderJson36-opencl | package | 26.07-1.1 | x86_64 | Main Repository (OSS)
name: libtimelineDecoderJson36-opencl
| libur_adapter_opencl0 | package | 0.11.10-2.1 | x86_64 | Main Repository (OSS)
name: libur_adapter_opencl0
i+ | Mesa-libRusticlOpenCL | package | 26.2.3-1.1 | x86_64 | Main Repository (OSS)
name: Mesa-libRusticlOpenCL
| nautilus-extension-opencloud | package | 1.0.0-1.3 | noarch | Main Repository (OSS)
name: nautilus-extension-opencloud
| nemo-extension-opencloud | package | 1.0.0-1.3 | noarch | Main Repository (OSS)
name: nemo-extension-opencloud
| opencl-cpp-headers | package | 2026.05.29-1.1 | noarch | Main Repository (OSS)
name: opencl-cpp-headers
| opencl-headers | package | 2026.05.29-1.3 | noarch | Main Repository (OSS)
name: opencl-headers
| opencloud-desktop | package | 4.0.0-1.1 | x86_64 | Main Repository (OSS)
name: opencloud-desktop
| opencloud-dolphin | package | 1.0.0-2.6 | x86_64 | Main Repository (OSS)
name: opencloud-dolphin
| opencloud-extensions-resources | package | 1.0.0-1.3 | x86_64 | Main Repository (OSS)
name: opencloud-extensions-resources
| opencloud-server | package | 8.0.1-1.1 | x86_64 | Main Repository (OSS)
name: opencloud-server
| rocm-opencl | package | 7.2.2-3.1 | x86_64 | Main Repository (OSS)
name: rocm-opencl
| rocm-opencl-devel | package | 7.2.2-3.1 | x86_64 | Main Repository (OSS)
name: rocm-opencl-devel
Troubleshooting steps taken:
- digiKam starts segfaulting on start. I try disabling OpenCL in
~/.config/digikam_systemrcand it starts fine, but obviously without OpenCL. - I run
clinfoto see what was happening, but it segfaults as well.OCL_ID_DEBUG=7 clinfogives the following ouput:
user@host ~ $ OCL_ICD_DEBUG=7 clinfo
ocl-icd(ocl_icd_loader.c:891): __initClIcd: Reading icd list from '/etc/OpenCL/vendors' and '/usr/share/OpenCL/vendors'
ocl-icd(ocl_icd_loader.c:896): __initClIcd: Cannot open '/etc/OpenCL/vendors'. Trying '/usr/share/OpenCL/vendors'
ocl-icd(ocl_icd_loader.c:201): _find_num_icds: return: 1/0x1
[1] 6426 segmentation fault (core dumped) OCL_ICD_DEBUG=7 clinfo
- Sure enough, there is no
/etc/OpenCL/vendors, but/usr/share/OpenCL/vendors/rusticl.icdexists so it should be fine. - I triy uninstalling and reinstalling the relevant packages, but no joy is to be had.
- Having run out of ideas, on a whim I try
sudo ln -s /usr/share/OpenCL /etc/OpenCLand, strangely enough, this seems to solve the issue.
The Question(s):
So my main question is… Why? Did something change in a recent package update to confuse ocl-icd?
But also… Has anyone else experienced anything like this? Is there something else wrong with my installation that might have caused this? Will my symlink get me into any trouble?