[compiler-rt] [TSan] Add support for Android (PR #147580)
Fei Peng via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 8 01:24:42 PDT 2025
airpfei wrote:
@enh-google could you please review this PR again? I have figured out the root causes of all issues.
Here are the changes in this PR:
1. Fixed Android setjmp issue. The root cause is that TSan initializes before longjmp_xor_key is set up. During [__libc_init_vdso](https://android.googlesource.com/platform/bionic/+/refs/heads/android16-release/libc/bionic/libc_init_common.cpp#89), a call to strcmp triggers TSan initialization, which occurs before __libc_init_setjmp_cookie. The solution is to call InitializeLongjmpXorKey on the first use of longjmp_xor_key. Additionally, correct LONG_JMP_SP_ENV_SLOT by following the bionic source code.
2. Skip thr object range check on Android. On Android, thr is allocated on the heap, causing the check to fail.
3. Disable intercepting clone on Android. `pthread_create` internally calls clone. Disabling the interception of `clone` resolves the issue in most scenarios.
I have fixed the PAC issue in https://github.com/llvm/llvm-project/pull/153081
https://github.com/llvm/llvm-project/pull/147580
More information about the llvm-commits
mailing list