[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#882255: libc6-amd64: Multilib causes catastrophic system failure during upgrade to libc 2.25



Package: libc6-amd64
Version: 2.25-1
Severity: critical
Justification: breaks the whole system

Dear Maintainer,

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?

I have a x86-64 system with i386 and x32 foreign architectures (because I
need to develop software for i386 and x32 architectures).

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

I ran apt update and apt upgrade. Apt tried to upgrade to libc-2.25.

   * What was the outcome of this action?

Halfway through apt upgrade it failed and I ended up with unusable system where
large number of binaries were segfauting on startup without doign anything.

   * What outcome did you expect instead?

The upgrade to libc-2.25 should work.


The reason for the catastrophic failure is this:

There is package libc6-amd64:i386 and libc6-amd64:x32 (which provide
x86-64 libc in /lib64/). This package is not technically needed (because
x86-64 libc is already installed in /lib/x86_64-linux-gnu/), but it is
installed nonetheless because of some dependencies.

apt makes sure that all libc packages are upgraded at once to the same
version. However, during the upgrade process, the package
libc6-amd64 is upgraded before libc6:amd64. So, during the upgrade, we
temporarily have two libcs with different versions on the system, and this
mismatch makes most of the x86-64 binaries crash. Due to the crashes, the
upgrade doesn't proceed and it doesn't install the correct libc version in
/lib/x86_64-linux-gnu/.

The result is unusable system.

The system can be fixed if we mount it from another machine and remove the
libc files from /lib64 directory - the upgrade can then proceed and
install correct libc in /lib/x86_64-linux-gnu/.

The libc package should be fixed, so that if we have mismatching libc
version in /lib64 and in /lib/x86_64-linux-gnu/, it shouldn't crash,
because such mismatch happens temporarily during upgrade.


-- System Information:
Debian Release: buster/sid
  APT prefers unreleased
  APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 4.14.0 (SMP w/12 CPU cores; PREEMPT)
Locale: LANG=cs_CZ.utf8, LC_CTYPE=cs_CZ.utf8 (charmap=UTF-8), LANGUAGE=cs_CZ.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages libc6-amd64 depends on:
ii  libc6  2.25-1

libc6-amd64 recommends no packages.

libc6-amd64 suggests no packages.

-- no debconf information


Reply to: