[LeakSanitizer] Capture calling thread SP early to avoid false negatives.
authorWiktor Garbacz <wiktorg@google.com>
Wed, 12 Oct 2022 23:36:37 +0000 (16:36 -0700)
committerVitaly Buka <vitalybuka@google.com>
Wed, 12 Oct 2022 23:46:32 +0000 (16:46 -0700)
commit39db491957dcf095936d81bed89c2b4edae2a1e7
treeded94e64827762ea71d2ae100dee199df0f4acea
parent24989646a5216cc6f8c6d336a17e7cb2f5c60454
[LeakSanitizer] Capture calling thread SP early to avoid false negatives.

As shown in https://github.com/llvm/llvm-project/issues/42932 dead
pointers might be overlapped by a new stack frame inside CheckForLeaks,
which does not use bytes with pointers. This leads to false negatives.

It's not a full solution for the problem as it does not solve
"overlapping" new/old frames for frames below the CheckForLeaks and in
other threads. It should improve leaks found in direct callers of
__lsan_do_leak_check.

Differential Revision: https://reviews.llvm.org/D130237
compiler-rt/lib/lsan/lsan_common.cpp
compiler-rt/lib/lsan/lsan_common.h