Upgrading libc6-lse breaks on systems it is in use
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
glibc (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Confirmed
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Undecided
|
Unassigned | ||
Groovy |
Won't Fix
|
Undecided
|
Unassigned | ||
Hirsute |
Fix Released
|
Undecided
|
Unassigned | ||
ubuntu-release-upgrader (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned | ||
Bionic |
Confirmed
|
Undecided
|
Unassigned | ||
Focal |
Confirmed
|
Undecided
|
Unassigned | ||
Groovy |
Won't Fix
|
Undecided
|
Unassigned | ||
Hirsute |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
[Impact]
* On arm64 systems supporting LSE and libc6-lse being installed an attempt to upgrade the package makes the upgrade fail and leave the system in an unusable state.
* Performing a release upgrade on such arm64 systems also break if the libc6-lse package was installed and it is also present in the target release.
[Test Plan (Focal)]
* Set up an 8 core LSE system such as one of the AWS Graviton2 instances.
* If libc6-lse is installed, remove it.
* Compile and run the a.c test program attached in LP: #1885012 and measure the run time a few times.
gcc -O2 -o a.out a.c -lpthread -DITER=1000 -DTHREADS=64
* Install libc6-lse (again).
* Reboot
* Upgrade to the fixed libc6 package which Provides libc6-lse.
* The upgrade should succeed and remove the libc6-lse package.
* Run the compiled a.c again and observe it running much faster than with the standard libc6 package.
[Test Plan (Groovy)]
* Groovy's libc6 is already compiled with -moutline-atomics by default, thus there is no need to verify that.
* Set up an LSE system such as one of the AWS Graviton2 instances.
* Install libc6-lse if it is not installed.
* Reboot
* Upgrade to the fixed libc6 package which Provides libc6-lse.
* The upgrade should succeed and automatically remove the libc6-lse package.
[Where problems could occur]
* The fix is compiling libc6 with -moutline-atomics which is in use instead of shipping the libc6-lse separate binary package. Should there be any GCC bug it could cause problems.
[Other Info (Focal)]
* The positive side effect of merging libc6-lse to libc6 and enabling optimization is that on capable HW the default libc6 will take advantage of the LSE instructions and improve the performance without requiring the installation of the additional libc libraries.
[Original Bug Text]
Errors were encountered while processing:
/var/cache/
Exception during pm.DoInstall(): E:Sub-process /usr/bin/dpkg returned an error code (1)
ProblemType: Package
DistroRelease: Ubuntu 20.04
Package: libc6 2.31-0ubuntu9.1
ProcVersionSign
Uname: Linux 5.4.0-1035-aws aarch64
ApportVersion: 2.20.11-
Architecture: arm64
CasperMD5CheckR
Date: Thu Jan 21 16:19:53 2021
Df:
Dmesg:
Ec2AMI: ami-0489277f0e9
Ec2AMIManifest: (unknown)
Ec2Availability
Ec2InstanceType: t4g.micro
Ec2Kernel: unavailable
Ec2Ramdisk: unavailable
ErrorMessage: new libc6:arm64 package post-removal script subprocess returned error exit status 127
Python3Details: /usr/bin/python3.8, Python 3.8.5, python3-minimal, 3.8.2-0ubuntu2
PythonDetails: N/A
RelatedPackageV
dpkg 1.19.7ubuntu3
apt 2.0.2ubuntu0.2
SourcePackage: glibc
Title: package libc6 2.31-0ubuntu9.1 failed to install/upgrade: new libc6:arm64 package post-removal script subprocess returned error exit status 127
UpgradeStatus: Upgraded to focal on 2021-01-21 (0 days ago)
tags: | removed: need-duplicate-check |
Changed in glibc (Ubuntu): | |
status: | New → Triaged |
tags: | added: fr-1129 |
tags: | removed: rls-ff-incoming |
Changed in glibc (Ubuntu Focal): | |
status: | New → In Progress |
Changed in glibc (Ubuntu Groovy): | |
status: | New → In Progress |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in glibc (Ubuntu Groovy): | |
status: | Fix Committed → Won't Fix |
Changed in ubuntu-release-upgrader (Ubuntu Groovy): | |
status: | Confirmed → Won't Fix |
Changed in ubuntu-release-upgrader (Ubuntu Hirsute): | |
status: | Confirmed → Won't Fix |
Removing libc6-lse before the release upgrade resolves the issue.
Since the libc6-lse went away in hirsute anyway and ubuntu- release- upgrader updates are much easier and quicker than glibc ones I propose adding a quirk to remove libc6-lse before upgrades and possibly install it again if it is avaliable.