[Bug 739374] Re: eglibc newer than 2.12.1 in natty results in alignment errors, SIGLILL and segfaults on tegra2 systems
Peter Maydell
peter.maydell at linaro.org
Thu Aug 18 04:40:53 UTC 2011
For the record, the general consensus on the #ac100 irc channel seems to
be:
(1) if you have a mismatched kernel and eglibc, where the kernel has its
half of the Android erratum workaround enabled but the libc does not,
then you are going to get segfaults (purely as a result of the mismatch
and without requiring any kind of hardware bug to manifest itself) if
libc tries to do TLS by direct use of the cp15 register. Maverick eglibc
was OK because it always deferred to the kernel to do TLS. I believe
the segfault Michael reports in comment #7 is this "mismatched
libc/kernel" kind.
(2) if you did want to try to work around this bug in a way which didn't
require unpleasant and impractical things like "compile everything to
avoid the cp15 TLS register", the only approach we could think of was to
make eglibc always allocate TLS data such that the value to be stored in
the TLS register has bit 20 clear...
(3) ...however, if you have a stock eglibc and a kernel with the
erratum workaround disabled/removed, then things seem in practice to
work OK. Speculation is that perhaps the erratum is only a problem in
marginal situations (eg if the core is very hot).
So what we've ended up doing is disabling the kernel workaround and
crossing our fingers.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/739374
Title:
eglibc newer than 2.12.1 in natty results in alignment errors, SIGLILL
and segfaults on tegra2 systems
Status in “eglibc” package in Ubuntu:
Expired
Bug description:
doing an upgrade from a maverick to a natty rootfs on tegra2 hardware
results in a mostly nonworking system, apps segfailt or die with
SIGILL, dmesg is full of alignment error messages.
apparently tegra 2 processors have a bug in the register read path of
bit 20 of the CP15 c13, 3 register (used for software thread local
storage)
there is a tegra errata (657451) for kernel as well as for the android bionic lib that seems to work around the issue
http://gitorious.org/replicant/android_bionic/commit/e88cc3d8cb2989f66624d018a6f5fa559c51460b?diffmode=sidebyside
in maverick libc did not have this issue, it only regressed in natty due to either a change in libc or in the toolchain.
pinning libc to 2.12.1 and doing a dist-upgrade makes everything work fine.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/739374/+subscriptions
More information about the foundations-bugs
mailing list