Cannot start Darktable [solved]

OS: Garuda Linux x86_64
            .8Xx;                    8x:.         Host: Z370N WIFI
          .tt8x          .d            x88;       Kernel: 6.3.9-zen1-1-zen
       .@8x8;          .db:              xx@;     Uptime: 1 min
     ,tSXX°          .bbbbbbbbbbbbbbbbbbbB8x@;    Packages: 1210 (pacman)[stable]
   .SXxx            bBBBBBBBBBBBBBBBBBBBbSBX8;    Shell: fish 3.6.1
 ,888S                                     pd!    Display: 2560x1440
8X88/                                       q     DE: Gnome 44.2
8X88/                                             WM: Mutter (Wayland)
GBB.                                              WM Theme: Adwaita-dark
 x%88        d888@8@X@X@X88X@@XX@@X@8@X.          Theme: Adwaita-dark [GTK2/3/4]{?3} {3} [Plasma], {?}{7}
   dxXd    dB8b8b8B8B08bB88b998888b88x.           Icons: Papirus-Dark [GTK2/3/4]
    dxx8o                      .@@;.              Terminal: gnome-terminal-server 3.48.1
      dx88                   .t@x.                Terminal Font: FiraCode Nerd Font Mono 12
        d:SS@8ba89aa67a853Sxxad.                  CPU: Intel(R) Core(TM) i7-8700K (12) @ 4.7 GHz
          .d988999889889899dd.                    GPU: Intel UHD Graphics 630
                                                  GPU: AMD Radeon RX 580
                                                  Memory: 1.40 GiB / 15.48 GiB

Darktable 4.5.0.r14.ge12a2a2a09-1 installed from (chaotic-aur)

Was working perfectly till day before yesterday there were few updated and today it is not starting giving me error

darktable: error while loading shared libraries: libicui18n.so.72: cannot open shared object file: No such file or directory

This file is present in /usr/lib32 and it was installed by icu package (International components for Unicode library) which was recently upgraded. I reinstalled it and darktable but still this error comes.

When I give

sudo ldconfig -v |grep libicui18n.so.72

ldconfig: Path `/usr/lib64' given more than once
(from <builtin>:0 and <builtin>:0)
ldconfig: Can't stat /usr/libx32: No such file or directory
	libicui18n.so.72 -> libicui18n.so.72.1

How to solve this problem?

I noticed that you have the file present in /usr/lib32 (which looks like a normal location),
and ldconfig looks in /usr/libx32, not a usual name.

So that may be an error in the dt build you used.

(Apart from that, I’m surprised to see dt use “lib32”)

This means that you system has update to a new version of libicui18n.so. You need to build yourself against this new lib or wait/download another build compatible with your new system.

2 days back it was working!

I am absolutely new to Arch and like Ubuntu (which I was more familiar) there is no LD_LIBRARY_PATH to look in the search path. In Arch as per my search it looks in /etc/ld.so.conf/ and there, there are 3 files

> fakeroot (text file contents)
>     /usr/lib/libfakeroot
>     2 files libfakeroot.so which links to
>                libfakeroot-0.so
> lib32-glibc.conf (text file contents)
>     /usr/lib32
> opencl-amd.conf (text file contents)
>    /opt/rocm-5.6.0/opencl/lib
>   /opt/rocm-5.6.0/lib
>  /opt/rocm-5.6.0/hip/lib

So these are the additional path where /usr/lib32 is already mentioned. Why it is not looking there and why this entry of /usr/libx32?
But if you notice that the grep line finds the libicui18n.so.72 → libicui18n.so.72.1 file but DT is not able to why?

@Pascal_Obry sorry didn’t see your post will wait for the next update.

Something else that surprises me is looking for libraries in directories for 32-bit versions.
Have you tried using ldd? (> ldd /usr/bin/darktable) That should show you what libraries dt is expecting and where it found them.
Most use exclusively 64-bit on modern systems…

For comparison, if I use `ldd /opt/darktable/bin/darktable |grep -i libicu’, it gives me

 libicui18n.so.suse65.1 => /usr/lib64/libicui18n.so.suse65.1 (0x00007fa6f3216000)
 libicudata.so.suse65.1 => /usr/lib64/libicudata.so.suse65.1 (0x00007fa6f3013000)
 libicuuc.so.suse65.1 => /usr/lib64/libicuuc.so.suse65.1 (0x00007fa6f2c34000)

(Also, if possible, minor versions tend to have a symlink from the corresponding base version, i.e.
if the installed version is libicui18n.so.suse65.1, there would be a symlink to that library named libicui18n.so.suse65. That avoids executables from not working while there is a compatible library available)

1 Like

Here is a Garuda Linux running with the last update yesterday evening.
Differently to your system the darktable version here is the precompiled 4.4.0 binary from the extra/darktable package and I can not only start but also use it.

The “ldconfig -v” command shows the same error regarding “/usr/libx32” as on your system. That seems to be an older issue with ldconfig because I found complaints about that through the years, dating back to 2014 and for several different Linux distributions. Based on that I think that is not the culprit that darktable shows that “file not found” error for libicui18n.so.72.

I tried the following:

[ecky@Waldo ~]$ ldd /usr/bin/darktable  | grep libicui18n
libicui18n.so.73 => /usr/lib/libicui18n.so.73 (0x00007fadc6600000)
[ecky@Waldo ~]$ pacman -F /usr/lib/libicui18n.so.73
usr/lib/libicui18n.so.73 is owned by core/icu 73.2-1
[ecky@Waldo ~]$ file /usr/lib/libicui18n.so.73
/usr/lib/libicui18n.so.73: symbolic link to libicui18n.so.73.2
[ecky@Waldo ~]$ file /usr/lib/libicui18n.so.73.2
/usr/lib/libicui18n.so.73.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=901ccd084e9b85eac6b4c0393f2697812c98e8c5, stripped

Perhaps the output of these commands on your system can hint to something…

E.

ldd /usr/bin/darktable  | grep -i libicu
	libicui18n.so.72 => not found
	libicuuc.so.72 => not found
	libicuuc.so.73 => /usr/lib/libicuuc.so.73 (0x00007ff1e9800000)
	libicudata.so.73 => /usr/lib/libicudata.so.73 (0x00007ff1dc200000)

Raj, why not compile darktable yourself?

Can I delete the chaotic-arch DT and install it from aur? Will it solve the problem?

@Claes can you tell me the process if I find it comfortable (confident in following the instructions) I’ll give it a try.

Comfortable or not – I just PM’d it to you.

Here’s my build script, which I have posted several times. You’ll need to come darktable first, and install the build dependencies listed in the README file.

Thanks! :pray:t3:
@Claes build my first Darktable with your endeavour.txt

/opt/darktable/bin/darktable --version
this is darktable 4.5.0+38~g57f0f67816
copyright (c) 2009-2023 johannes hanika
https://github.com/darktable-org/darktable/issues/new/choose

compile options:
  bit depth is 64 bit
  normal build
  SSE2 optimized codepath enabled
  OpenMP support enabled
  OpenCL support enabled
  Lua support enabled, API version 9.1.0
  Colord support enabled
  gPhoto2 support enabled
  GraphicsMagick support enabled
  ImageMagick support disabled
  libavif support enabled
  libheif support enabled
  libjxl support enabled
  OpenJPEG support enabled
  OpenEXR support enabled
  WebP support enabled

/opt/darktable/bin/darktable-cmstest
darktable-cmstest version 4.5.0+38~g57f0f67816
this executable was built with colord support enabled
darktable itself was built with colord support enabled

primary CRTC is at CRTC 0

DP-4	the X atom and colord returned different profiles
	X atom:	_ICC_PROFILE (0 bytes)
		description: (none)
	colord:	"/home/raj/.local/share/icc/edid-44da77e788024f87c9ac2a6e19671453.icc"
		description: Dell Inc. 24"

Better check your system setup
 - some monitors reported different profiles
You may experience inconsistent color rendition between color managed applications

What is this?

/opt/darktable/bin/darktable-cltest
     0.0818 [dt_get_sysresource_level] switched to 1 as `default'
     0.0818   total mem:       15854MB
     0.0818   mipmap cache:    1981MB
     0.0818   available mem:   7927MB
     0.0818   singlebuff:      123MB
     0.0818   OpenCL tune mem: OFF
     0.0818   OpenCL pinned:   OFF
[opencl_init] opencl related configuration options:
[opencl_init] opencl: ON
[opencl_init] opencl_scheduling_profile: 'very fast GPU'
[opencl_init] opencl_library: 'default path'
[opencl_init] opencl_device_priority: '!0,*/!0,*/!0,*/!0,*/!0,*'
[opencl_init] opencl_mandatory_timeout: 200
[opencl_init] opencl library 'libOpenCL' found on your system and loaded
[opencl_init] found 1 platform
[opencl_init] found 1 device

[dt_opencl_device_init]
   DEVICE:                   0: 'Ellesmere'
   PLATFORM NAME & VENDOR:   AMD Accelerated Parallel Processing, Advanced Micro Devices, Inc.
   CANONICAL NAME:           amdacceleratedparallelprocessingellesmere
   DRIVER VERSION:           3224.4
   DEVICE VERSION:           OpenCL 1.2 AMD-APP (3224.4)
   DEVICE_TYPE:              GPU
   GLOBAL MEM SIZE:          7957 MB
   MAX MEM ALLOC:            6763 MB
   MAX IMAGE SIZE:           16384 x 16384
   MAX WORK GROUP SIZE:      256
   MAX WORK ITEM DIMENSIONS: 3
   MAX WORK ITEM SIZES:      [ 1024 1024 1024 ]
   ASYNC PIXELPIPE:          NO
   PINNED MEMORY TRANSFER:   NO
   MEMORY TUNING:            NO
   FORCED HEADROOM:          400
   AVOID ATOMICS:            NO
   MICRO NAP:                250
   ROUNDUP WIDTH:            16
   ROUNDUP HEIGHT:           16
   CHECK EVENT HANDLES:      128
   PERFORMANCE:              2.594
   TILING ADVANTAGE:         0.000
   DEFAULT DEVICE:           NO
   KERNEL BUILD DIRECTORY:   /opt/darktable/share/darktable/kernels
   KERNEL DIRECTORY:         /home/raj/.cache/darktable/cached_v1_kernels_for_AMDAcceleratedParallelProcessingEllesmere_32244
   CL COMPILER OPTION:       -cl-fast-relaxed-math
   KERNEL LOADING TIME:       4.8694 sec
[opencl_init] OpenCL successfully initialized. Internal numbers and names of available devices:
[opencl_init]		0	'AMD Accelerated Parallel Processing Ellesmere'
[opencl_init] FINALLY: opencl is AVAILABLE and ENABLED.
[dt_opencl_update_priorities] these are your device priorities:
[dt_opencl_update_priorities] 		image	preview	export	thumbs	preview2
[dt_opencl_update_priorities]		0	0	0	0	0
[dt_opencl_update_priorities] show if opencl use is mandatory for a given pixelpipe:
[dt_opencl_update_priorities] 		image	preview	export	thumbs	preview2
[dt_opencl_update_priorities]		1	1	1	1	1
[opencl_synchronization_timeout] synchronization timeout set to 0
[dt_opencl_update_priorities] these are your device priorities:
[dt_opencl_update_priorities] 		image	preview	export	thumbs	preview2
[dt_opencl_update_priorities]		0	0	0	0	0
[dt_opencl_update_priorities] show if opencl use is mandatory for a given pixelpipe:
[dt_opencl_update_priorities] 		image	preview	export	thumbs	preview2
[dt_opencl_update_priorities]		1	1	1	1	1
[opencl_synchronization_timeout] synchronization timeout set to 0

Now how to check when a new version is available and how to build it?

Again Thanks “for making me go where I have not gone before”

Good, Raj!

Now how to check when a new version is available and how to build it?

Ho-hum: See lines 33-36 in the document I sent you.

I am unable to pin DT as there is no option to do so. It is also not shown in “Show Apps” (list of installed apps)

Ho-hum: See lines 30-31 in the document I sent you.

DT starts it is shown in the launch pad but there is no option to pin it. Can you please explain what is a task manager.

Are you using Endeavouros?
When you have started dt, an icon will show up at the bottom of your monitor. In my case it is the 3rd icon from the right.
Right-click on that icon and select “pin to task manager”
raj

As mentioned there is no such option and I am using Garuda Gnome. The icon is there in the Dock