[compiler-rt] [tsan] Lazily call 'personality' to minimize sandbox violations (PR #79334)

Dmitry Vyukov via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 24 09:35:35 PST 2024


================
@@ -267,6 +267,14 @@ static void ReExecIfNeeded() {
   if (reexec) {
     // Don't check the address space since we're going to re-exec anyway.
   } else if (!CheckAndProtect(false, false, false)) {
+    // ASLR personality check.
+    // N.B. 'personality' is sometimes forbidden by sandboxes, so we only call
+    // this as a last resort (when the memory mapping is incompatible and TSan
+    // would fail anyway).
+    int old_personality = personality(0xffffffff);
----------------
dvyukov wrote:

We probably could test this by defining own personality function in a test that will simply abort. This way we can have a list of functions that must not be called by the runtime (prohibited by sandboxes).
Though my bet is that it will fail on some platforms for some reasons. So probably the test should be limited to Linux/x86 only.

https://github.com/llvm/llvm-project/pull/79334


More information about the llvm-commits mailing list