Disable lock-elision in glibc pending upstream changes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
glibc (Ubuntu) |
Fix Released
|
Undecided
|
Adam Conrad | ||
Xenial |
Fix Released
|
Undecided
|
Adam Conrad | ||
Yakkety |
Fix Released
|
Undecided
|
Adam Conrad |
Bug Description
[ SRU Justification ]
A long thread on debian-devel[1] has pointed out that hardware lock elision behaves differently (arguably, more correctly) in the face of incorrect pthread usage, especially where double-unlocks are concerned. While this isn't itself a bug, it's quite true that we have no way of knowing right now just how many third party sources are buggy, and as people are upgrading to hardware that supports this feature, more software may crash in the future.
The long-term goal should be to try to ferret out all the bad actors here, fix them, and re-enable hardware lock elision as the default, but the sane conservative choice seems to be to just disable the feature entirely for now, while we (the glibc upstream community) work on making lock elision a per-process opt-in.
[1] https:/
[ Proposed Fix ]
This SRU will disable lock elision entirely, thus avoiding the problematic codepaths. A future SRU will re-enable building those codepaths, but in such a way that they're disabled by default with a per-process environment twiddle to enable it on demand.
[ Regression Potential ]
There's a potential for performance regressions, however given that most x86 users are only just now upgrading to hardware that supports this feature, the status quo is that this codepath is dead to most users. As for s390x and PPC, we've had requests to disable lock elision by default on both arches (entirely on s390x, conditionally on PPC), and those requests will be somewhat satisfied by this SRU, and cleaned up in the future SRU where we integrate the upstream-concensus patch to allow it to be conditionally re-enabled.
[ Testing ]
autopkgtest regressions will be our guide here on if this SRU is causing any issues.
Changed in glibc (Ubuntu): | |
assignee: | nobody → Adam Conrad (adconrad) |
Changed in glibc (Ubuntu Xenial): | |
assignee: | nobody → Adam Conrad (adconrad) |
Changed in glibc (Ubuntu Yakkety): | |
assignee: | nobody → Adam Conrad (adconrad) |
tags: |
added: verification-done removed: verification-needed |
Hello Adam, or anyone else affected,
Accepted glibc into xenial-proposed. The package will build now and be available at https:/ /launchpad. net/ubuntu/ +source/ glibc/2. 23-0ubuntu5 in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification- failed. In either case, details of your testing will help us make a better decision.
Further information regarding the verification process can be found at https:/ /wiki.ubuntu. com/QATeam/ PerformingSRUVe rification . Thank you in advance!