diff options
-rw-r--r-- | hardened/toolchain/branches/pieworld/pieworld.README | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/hardened/toolchain/branches/pieworld/pieworld.README b/hardened/toolchain/branches/pieworld/pieworld.README index ec4f36c..a4899a3 100644 --- a/hardened/toolchain/branches/pieworld/pieworld.README +++ b/hardened/toolchain/branches/pieworld/pieworld.README @@ -221,8 +221,14 @@ tst-cancel1 fails on x86/amd64 because support is not in gcc-4.1.1 - gcc-4.2 wil Things to work out: 1) Why all those mutex/robust (barrier) checks fail on x86 with a hardened kernel (only!) - Got it! Blae GRsecurity :/ With PaX disabled, the test reports for tst-mutexpi4: - tst-mutexpi4: pthread_mutex_lock.c:287: __pthread_mutex_lock: Assertion `robust || (oldval & 0x40000000) == 0' failed. + Disabling PaX/GRsecurity (i.e. unhardening!) gets: + tst-mutexpi4: pthread_mutex_lock.c:287: __pthread_mutex_lock: Assertion `robust || (oldval & 0x40000000) == 0' failed. + Didn't expect signal from child: got `Aborted' + This happens when the parent tries to lock the mutex; at this point the child has finished - well, + it has aborted, which it shouldn't have done. The reason the assertion has failed is the + 'oldval ^ 0x40000000' bit, which is FUTEX_OWNER_DIED. This is consistent with the child process + aborting, instead of going to an idle state waiting to be cleaned up when the parent finishes. + Investigation ongoing... 2) Why x86 passes elf/tst-tls{1,2}-static when all other arches fail it 3) What's different about x86_64 that it fails a whole bunch that are ok for other arches |