Package: cryptsetup-initramfs Version: 2:2.2.2-2 Severity: critical The side effect of initramfs logic used to find libgcc leads to unbootable system if libgcc is in different location than libc. Maybe something like "ldconfig -p | grep libgcc_s.so.1" should be used to locate libgcc instead?
Details: The recent update of libgcc1 to version 1:10-20200202-1 (unstable) moved it from: /lib/x86_64-linux-gnu/libgcc_s.so.1 to: /lib/libgcc_s.so.1 The initramfs hook for cryptsetup is still looking for it using previous location based on libc: # cat /usr/share/initramfs-tools/hooks/cryptroot [...] LIBC_DIR="$(ldd /sbin/cryptsetup | sed -nr 's#.* => (/lib.*)/libc\.so\.[0-9.-]+ \(0x[[:xdigit:]]+\)$#\1#p')" find -L "$LIBC_DIR" -maxdepth 1 -name 'libgcc_s.*' -type f | while read so; do copy_exec "$so" done # echo $(ldd /sbin/cryptsetup | sed -nr 's#.* => (/lib.*)/libc\.so\.[0-9.-]+ \(0x[[:xdigit:]]+\)$#\1#p') /lib/x86_64-linux-gnu # ldd /sbin/cryptsetup [...] libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4b0b6c0000) This leads to omission of libgcc_s.so.1 in initramfs and makes unlocking the root drive impossible (in case of LUKS2 at least) because of the following error: libgcc_s.so.1 must be installed for pthread_cancel to work I created initramfs hook in /etc/ that includes libgcc and it solves the problem (obviously as workaround): cp /lib/libgcc_s.so.1 "${DESTDIR}/usr/lib/" The difference in libgcc1 packages: (version 1:10-20200202-1) # dpkg -L libgcc1 /. /lib /lib/libgcc_s.so.1 /lib/x86_64-linux-gnu /usr /usr/share /usr/share/doc /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/libgcc1 /usr/share/doc/libgcc1 (version 1:9.2.1-25) # dpkg -L libgcc1 /. /lib /lib/x86_64-linux-gnu /lib/x86_64-linux-gnu/libgcc_s.so.1 /usr /usr/share /usr/share/doc /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/libgcc1 /usr/share/doc/libgcc1 Thanks, Karol