Broken rusticl, missing /etc/OpenCL?

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:

  1. digiKam starts segfaulting on start. I try disabling OpenCL in ~/.config/digikam_systemrc and it starts fine, but obviously without OpenCL.
  2. I run clinfo to see what was happening, but it segfaults as well. OCL_ID_DEBUG=7 clinfo gives 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
  1. Sure enough, there is no /etc/OpenCL/vendors, but /usr/share/OpenCL/vendors/rusticl.icd exists so it should be fine.
  2. I triy uninstalling and reinstalling the relevant packages, but no joy is to be had.
  3. Having run out of ideas, on a whim I try sudo ln -s /usr/share/OpenCL /etc/OpenCL and, 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?

Check bugreport
https://bugzilla.opensuse.org/show_bug.cgi?id=1282789

1 Like

Thanks. Wasn’t there when I first checked!

Glad (?) to know I’m not the only one.