Stop tracking atexit/__cxa_atexit/pthread_atfork allocations in LSan/NetBSD
authorKamil Rytarowski <n54@gmx.com>
Sat, 21 Sep 2019 07:30:42 +0000 (07:30 +0000)
committerKamil Rytarowski <n54@gmx.com>
Sat, 21 Sep 2019 07:30:42 +0000 (07:30 +0000)
commit8827047551570b7ed7088765c3de2a8cce6823b8
tree6bb8c27b32fb69dde6e171cbc6c0c2f6311c6ae5
parent04682939eb7e5ff06ec7e50cbe205b5c0069285f
Stop tracking atexit/__cxa_atexit/pthread_atfork allocations in LSan/NetBSD

Summary:
The atexit(3) and __cxa_atexit() calls allocate internally memory and free on exit,
after executing all callback. This causes false positives as DoLeakCheck() is called
from the atexit handler. In the LSan/ASan tests there are strict checks triggering
false positives here.

Intercept all atexit(3) and __cxa_atexit() calls and disable LSan when calling the
real functions.

Stop tracing allocations in pthread_atfork(3) funtions, as there are performed
internal allocations that are not freed for the time of running StopTheWorld()
code. This avoids false-positives.

The same changes have to be replicated in the ASan and LSan runtime.

Non-NetBSD OSs are not tested and this code is restricted to NetBSD only.

Reviewers: dvyukov, joerg, mgorny, vitalybuka, eugenis

Reviewed By: vitalybuka

Subscribers: jfb, llvm-commits, #sanitizers

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D67331

llvm-svn: 372459
compiler-rt/lib/asan/asan_interceptors.cpp
compiler-rt/lib/asan/asan_interceptors.h
compiler-rt/lib/lsan/lsan_interceptors.cpp
compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h