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

Thurston Dang via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 24 09:52:51 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);
----------------
thurstond wrote:

I'm not quite sure how I could add this to the TSan tests, since the sandbox behavior (e.g., allowing/disallowing 'personality') is dependent on the vendor's configuration.

Taken to an extreme, there's probably some sandbox out there that disallows 'printf', but it would be unreasonable to avoid printf entirely in TSan.

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


More information about the llvm-commits mailing list