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

Bug#494776: libc6-i686 (etch): /etc/ld.so.nohwcap is created and NOT removed



Package: libc6-i686
Version: 2.3.6.ds1-13etch7
Severity: important

Summary
-------
The parts of the preinst and postinst scripts that manipulate the
/etc/ld.so.hwcappkgs and /etc/ld.so.nohwcap files are buggy. Upon a fresh
installation of the libc6-i686 package, the /etc/ld.so.nohwcap file is
created and NOT removed.

This is due to bugs in maintainer scripts for both the libc6 and libc6-i686
packages.

This bug occurs only upon fresh installation of the affected packages.
Reinstalling or upgrading the libc6 package resolves the problem.

Details
-------
Upon a fresh installation of the libc6 package, the /etc/ld.so.hwcappkgs file
is NOT created. This is because the libc6.preinst script creates the
/etc/ld.so.nohwcap ONLY when being called with "upgrade" argument, and
libc6.postinst script requires this file to exist before creating the
/etc/ld.so.hwcappkgs file.

When the libc6-i686 package is subsequently installed, the
libc6-i686.preinst script creates the /etc/ld.so.nohwcap file. The
libc6-i686.postinst script does NOT remove this file when the
/etc/ld.so.hwcappkgs file does not exist.

This means the /etc/ld.so.nohwcap file is incorrectly left behind after a
fresh installation of the libc6 and libc6-i686 packages.

Not only does this disable the optimised libraries in the libc6-i686
package, it also disables the TLS (NPTL) versions of the libraries provided
by the original libc6 package.

First, I suggest the libc6.preinst should create the /etc/ld.so.nohwcap file
for any argument other than "abort-upgrade" in the style of the libc6-i686
package. This would ensure the /etc/ld.so.hwcappkgs is correctly created for
fresh installations.

Second, I suggest the creation of a helper script, update-hwcappkgs to
centralise the machinery and logic of maintaining the
/etc/ld.so.{hwcappkgs,nohwcap} files.



Reply to: