Bug 514140 - Digikam crashes with OpenCL headers installed but unusable hardware even if disabled in config
Summary: Digikam crashes with OpenCL headers installed but unusable hardware even if d...
Status: REPORTED
Alias: None
Product: digikam
Classification: Applications
Component: Bundle-AppImage (other bugs)
Version First Reported In: 9.0.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-01-04 11:54 UTC by Jens
Modified: 2026-01-04 18:38 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jens 2026-01-04 11:54:20 UTC
SUMMARY: see $SUBJECT

STEPS TO REPRODUCE
1. Download current appimage (2026-01-03 or -04) with or without debugging
2. sudo apt install mesa-opencl-icd       # on a Ryzen APU which isn't supported by Digikam
3. Start Digikam, *disable* OpenCL support, and then start any AI related task like face detection

OBSERVED RESULT
Crash after some seconds and some output about missing header files.
If I remove the above package and all its dependancies (so that /usr/linclude/clc does not exist any more) then face detection works again.

EXPECTED RESULT
Digikam should not care about OpenCL if it's disabled in the configuration, and not crash if it's enabled but not usable.

SOFTWARE/OS VERSIONS
Operating System: KDE neon User Edition
KDE Plasma Version: 6.5.4
KDE Frameworks Version: 6.21.0
Qt Version: 6.10.1
Kernel Version: 6.14.0-37-generic (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 9 8945HS w/ Radeon 780M Graphics
Memory: 32 GiB of RAM (30.6 GiB usable)
Graphics Processor: AMD Radeon 780M Graphics
Manufacturer: GEEKOM
Product Name: A8 MAX
Comment 1 caulier.gilles 2026-01-04 11:56:54 UTC
If it crash, please provide a GDB backtrace as explained here :

https://www.digikam.org/contribute/#appimage-bundle

Note : the -debug version of the AppImage will not prevent a crash, but it will help to localize where the dyfunction appears in the source code.
Comment 2 Maik Qualmann 2026-01-04 12:00:31 UTC
To disable OpenCL, digiKam must be restarted after the setting is changed. It cannot be done at runtime. The note that the system settings require a restart can be found on the settings page.

Maik
Comment 4 caulier.gilles 2026-01-04 14:29:25 UTC
Git commit e8d59044a16ac3b0a433df0160beccd3e1d73af7 by Gilles Caulier.
Committed on 04/01/2026 at 14:28.
Pushed by cgilles into branch 'master'.

more visible warning, placed on the top of page.

M  +28   -15   core/utilities/setup/misc/systemsettingswidget.cpp

https://invent.kde.org/graphics/digikam/-/commit/e8d59044a16ac3b0a433df0160beccd3e1d73af7
Comment 5 Jens 2026-01-04 18:07:03 UTC
Hello,
thank you for the quick triage!

Using an extracted debug session I was able to reproduce this using these settings:
[x] use hardware accelerated OpenCL
[_] use OpenCL for AI models  (<- deactivated)

Even if this is checked, Digikam should not crash if it doesn't work, if only because users might not be able to reach the settings again after setting it (in my case, Digikam crashes within 20 seconds of startup if this is checked and the openCL libraries are installed). Possibly because I have automatic faces rescan enabled which then tries to use OpenCL.

This does not happen if I uncheck the first checkbox above.

This is the first crash:
```
$ ./AppRun debug 
-- digiKam Linux AppImage Bundle
-- Use 'help' as CLI argument to know all available options for digiKam application.
-- Notes: to integrate this bundle to your desktop, use AppImageLauncher.
--        to enable all debug messages on the console, use 'export QT_LOGGING_RULES="digikam*=true"'.
--        to extract the bundle contents locally, use option '--appimage-extract' on the command line.
-- Detected host Linux neon-64-24.04
-- AppImage mounted directory: /home/jens/tmp/squashfs-root
Preloading skipped for libudev.so.0
Preloading             /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
Preloading skipped for libcrypto.so.1.1
Preloading skipped for libssl.so.1.1
Preloading             /usr/lib/x86_64-linux-gnu/libnss3.so
Preloading             /usr/lib/x86_64-linux-gnu/libnssutil3.so
Preloading             /usr/lib/x86_64-linux-gnu/libsmime3.so
Preloading             /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0
Preloading skipped for libgnutls.so.30
Preloading             /usr/lib/x86_64-linux-gnu/libnettle.so.8
-- Preloading shared libs: :/usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0:/usr/lib/x86_64-linux-gnu/libnss3.so:/usr/lib/x86_64-linux-gnu/libnssutil3.so:/usr/lib/x86_64-linux-gnu/libsmime3.so:/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0:/usr/lib/x86_64-linux-gnu/libnettle.so.8
Starting delayed digiKam for remote debugging...
Use 'bt' command on debugger prompt to get a crash backtrace.
Use 'q' command to quit debugger session.
unknown: Could not find the Qt platform plugin "wayland" in ""
unknown: QSvgHandler: Image filename is empty
unknown: QSvgHandler: Image filename is empty
MESA-LOADER: failed to open radeonsi: ././/lib/dri/radeonsi_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open zink: ././/lib/dri/zink_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open kms_swrast: ././/lib/dri/kms_swrast_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open swrast: ././/lib/dri/swrast_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
unknown: Using Qt multimedia with FFmpeg version 8.0.1 nonfree and unredistributable
unknown: Unhandled container to remove :  Digikam::DigikamApp
Error on line 2762 (ocl.cpp): svmCapabilities is empty
OpenCL program build log: imgproc/resize
Status -11: CL_BUILD_PROGRAM_FAILURE
-D INTER_LINEAR -D SRC_DEPTH=0 -D T=uchar3 -D T1=uchar -D WT=int3 -D CONVERT_TO_WT=convert_int3 -D CONVERT_TO_DT=convert_uchar3_sat -D CN=3 -D INTER_RESIZE_COEF_BITS=11 -D AMD_DEVICE
In file included from <built-in>:1:
/usr/include/clc/clc.h:19:10: fatal error: 'clc/clcfunc.h' file not found

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.12.0) /mnt/data/b/master/ext_opencv/ext_opencv-prefix/src/ext_opencv/modules/core/src/ocl.cpp:5764: error: (-215:Assertion failed) u->origdata == data && "Details: https://github.com/opencv/opencv/issues/6293" in function 'deallocate_'

./AppRun: Zeile 266: 22915 Abgebrochen             (Speicherabzug geschrieben) digikam ${@:2}
```

This generated the following gdb output:
(...)
New Thread 0x7a4efa7fc6c0 (LWP 23230)]
[New Thread 0x7a4f461ff6c0 (LWP 23231)]
[Switching to Thread 0x7a4fbdffb6c0 (LWP 23206)]

Thread 193 "FaceDetRecoextr" hit Catchpoint 1.7 (exception thrown), 0x00007a5131e59d60 in __cxa_throw@plt () from /home/jens/tmp/squashfs-root/usr/lib/libopencv_core.so.412
A debugging session is active.

        Inferior 1 [process 22915] will be detached.

Trotzdem beenden? (y or n) [answered Y; input not from terminal]
[Inferior 1 (process 22915) detached]

I was not able to type "bt", gdb exited on its own.

The second crash was similar (doing nothing, just starting Digikam and waiting) but not identical:
 ```
Starting delayed digiKam for remote debugging...
Use 'bt' command on debugger prompt to get a crash backtrace.
Use 'q' command to quit debugger session.
unknown: Could not find the Qt platform plugin "wayland" in ""
unknown: QSvgHandler: Image filename is empty
unknown: QSvgHandler: Image filename is empty
MESA-LOADER: failed to open radeonsi: ././/lib/dri/radeonsi_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open zink: ././/lib/dri/zink_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open kms_swrast: ././/lib/dri/kms_swrast_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
MESA-LOADER: failed to open swrast: ././/lib/dri/swrast_dri.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden (search paths ././/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:././/lib/dri, suffix _dri)
unknown: Using Qt multimedia with FFmpeg version 8.0.1 nonfree and unredistributable
unknown: Unhandled container to remove :  Digikam::DigikamApp
unknown: "Tag 'a' is not defined in message {<__kuit_internal_top__><para>Dieses Stapelverarbeitungswerkzeug kann ein Bild in...}."
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/marsmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/lunarmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
unknown: Cannot open file '/tmp/.mount_digiKaia700p/usr/share/digikam/marble/svg/worldmap.svg', because: Die Datei oder das Verzeichnis konnte nicht gefunden werden
Error on line 2762 (ocl.cpp): svmCapabilities is empty
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.12.0) /mnt/data/b/master/ext_opencv/ext_opencv-prefix/src/ext_opencv/modules/core/src/ocl.cpp:5764: error: (-215:Assertion failed) u->origdata == data && "Details: https://github.com/opencv/opencv/issues/6293" in function 'deallocate_'

./AppRun: Zeile 266: 23573 Abgebrochen             (Speicherabzug geschrieben) digikam ${@:2}
```

gdb output:
[New Thread 0x72463d7fa6c0 (LWP 23958)]
[New Thread 0x72463cff96c0 (LWP 23959)]
[Switching to Thread 0x72481e5ff6c0 (LWP 23925)]

Thread 191 "FaceRecoextract" hit Catchpoint 1.8 (exception thrown), 0x0000724834459d60 in __cxa_throw@plt () from /home/jens/tmp/squashfs-root/usr/lib/libopencv_core.so.412
A debugging session is active.

        Inferior 1 [process 23573] will be detached.

Trotzdem beenden? (y or n) [answered Y; input not from terminal]
[Inferior 1 (process 23573) detached]
Comment 6 Maik Qualmann 2026-01-04 18:38:26 UTC
Okay, it works with OpenCL disabled; we've provided that option.

If it crashes directly in OpenCV, we have no way to catch it. And OpenCV even seems to have compiled a bug report link for this issue:

https://github.com/opencv/opencv/issues/6293

Maik