[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