[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