Bug#640872: libc6: upgrade fails to mv /lib64.eglibc-new to /lib64; leaves system unusable
Package: libc6
Version: 2.13-19
Severity: critical
Justification: breaks the whole system
remove_lib64_symlink in the preinst script attempts to delete /lib64
and mv /lib64.eglibc-new /lib64. To run mv without /lib64, it has to
explicitly specify an interpreter, which it does using
$interpreter /bin/mv /lib64.eglibc-new /lib64
$interpreter is set earlier in the function using
if ! $ldfile /bin/mv 2>/dev/null; then
interpreter=
else
interpreter=$ldfile
fi
The intent is that ld will fail if it can't interpret /bin/mv on a
multiarch system. However, even on a single arch system, this fails,
not because of ld, because becase /bin/mv isn't passed any arguments.
Hence, $interpreter gets incorrectly set to "", so the later call to
$interpreter /bin/mv fails because /bin/mv tries to use the system ELF
interpreter, which was just deleted.
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.39-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages libc6 depends on:
ii libc-bin 2.13-19 Embedded GNU C Library: Binaries
ii libgcc1 1:4.6.1-9 GCC support library
libc6 recommends no packages.
Versions of packages libc6 suggests:
ii debconf [debconf-2.0] 1.5.39 Debian configuration management sy
ii glibc-doc 2.13-2 Embedded GNU C Library: Documentat
ii locales 2.13-2 Embedded GNU C Library: National L
-- debconf information:
* glibc/upgrade: true
* glibc/disable-screensaver:
glibc/restart-failed:
* glibc/restart-services: gdm openbsd-inetd exim4 cups cron atd
Reply to: