summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hardened/toolchain/branches/pieworld/pieworld.README10
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