|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
12e137ab |
| 13-Apr-2022 |
Vitaly Buka <[email protected]> |
[NFC][sanitizer] Consolidate malloc hook invocations
|
| #
b84673b3 |
| 13-Apr-2022 |
Vitaly Buka <[email protected]> |
[NFC][sanitizer] Remove unnececary HOOK macros
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
765921de |
| 05-Jan-2022 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: prefix thread-safety macros with SANITIZER_
Currently we use very common names for macros like ACQUIRE/RELEASE, which cause conflicts with system headers. Prefix all macros with SA
sanitizer_common: prefix thread-safety macros with SANITIZER_
Currently we use very common names for macros like ACQUIRE/RELEASE, which cause conflicts with system headers. Prefix all macros with SANITIZER_ to avoid conflicts.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D116652
show more ...
|
| #
ad56941a |
| 07-Dec-2021 |
Kirill Stoimenov <[email protected]> |
[ASan] Renamed SHADOW_XYZ to ASAN_SHADOW_XYZ.
Follow up from D115271.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115293
|
| #
36e6a259 |
| 02-Dec-2021 |
Vitaly Buka <[email protected]> |
[NFC][sanitizer] Remove SetSoftRssLimitExceededCallback
According comments on D44404, something like that was the goal.
Reviewed By: morehouse, kstoimenov
Differential Revision: https://reviews.ll
[NFC][sanitizer] Remove SetSoftRssLimitExceededCallback
According comments on D44404, something like that was the goal.
Reviewed By: morehouse, kstoimenov
Differential Revision: https://reviews.llvm.org/D114991
show more ...
|
| #
d48d8670 |
| 02-Dec-2021 |
Vitaly Buka <[email protected]> |
[NFC][sanitizer] Rename RssLimitExceeded -> IsRssLimitExceeded
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
07092ea6 |
| 12-Nov-2021 |
Vitaly Buka <[email protected]> |
[asan] Fix GCC warning "left shift count >= width"
Fixes PR52385
|
| #
629b40da |
| 03-Nov-2021 |
Martin Liska <[email protected]> |
Fix -Wformat warnings reported by GCC.
Differential Revision: https://reviews.llvm.org/D113099
|
| #
d2df5ce2 |
| 01-Oct-2021 |
Vitaly Buka <[email protected]> |
[NFC][asan] Remove redundant functions
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init |
|
| #
0da172b1 |
| 09-Jul-2021 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: add thread safety annotations
Enable clang Thread Safety Analysis for sanitizers: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
Thread Safety Analysis can detect inconsist
sanitizer_common: add thread safety annotations
Enable clang Thread Safety Analysis for sanitizers: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
Thread Safety Analysis can detect inconsistent locking, deadlocks and data races. Without GUARDED_BY annotations it has limited value. But this does all the heavy lifting to enable analysis and allows to add GUARDED_BY incrementally.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D105716
show more ...
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
92a3a2dc |
| 28-Apr-2021 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: introduce kInvalidTid/kMainTid
Currently we have a bit of a mess related to tids: - sanitizers re-declare kInvalidTid multiple times - some call it kUnknownTid - implicit assump
sanitizer_common: introduce kInvalidTid/kMainTid
Currently we have a bit of a mess related to tids: - sanitizers re-declare kInvalidTid multiple times - some call it kUnknownTid - implicit assumptions that main tid is 0 - asan/memprof claim their tids need to fit into 24 bits, but this does not seem to be true anymore - inconsistent use of u32/int to store tids
Introduce kInvalidTid/kMainTid in sanitizer_common and use them consistently.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D101428
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1 |
|
| #
596d534a |
| 07-Jan-2021 |
Dan Liew <[email protected]> |
[ASan] Stop blocking child thread progress from parent thread in `pthread_create` interceptor.
Previously in ASan's `pthread_create` interceptor we would block in the `pthread_create` interceptor wa
[ASan] Stop blocking child thread progress from parent thread in `pthread_create` interceptor.
Previously in ASan's `pthread_create` interceptor we would block in the `pthread_create` interceptor waiting for the child thread to start.
Unfortunately this has bad performance characteristics because the OS scheduler doesn't know the relationship between the parent and child thread (i.e. the parent thread cannot make progress until the child thread makes progress) and may make the wrong scheduling decision which stalls progress.
It turns out that ASan didn't use to block in this interceptor but was changed to do so to try to address http://llvm.org/bugs/show_bug.cgi?id=21621/.
In that bug the problem being addressed was a LeakSanitizer false positive. That bug concerns a heap object being passed as `arg` to `pthread_create`. If:
* The calling thread loses a live reference to the object (e.g. `pthread_create` finishes and the thread no longer has a live reference to the object). * Leak checking is triggered. * The child thread has not yet started (once it starts it will have a live reference).
then the heap object will incorrectly appear to be leaked.
This bug is covered by the `lsan/TestCases/leak_check_before_thread_started.cpp` test case.
In b029c5101fb49b3577a1c322f42ef9fc616f25bf ASan was changed to block in `pthread_create()` until the child thread starts so that `arg` is kept alive for the purposes of leaking check.
While this change "works" its problematic due to the performance problems it causes. The change is also completely unnecessary if leak checking is disabled (via detect_leaks runtime option or CAN_SANITIZE_LEAKS compile time config).
This patch does two things:
1. Takes a different approach to solving the leak false positive by making LSan's leak checking mechanism treat the `arg` pointer of created but not started threads as reachable. This is done by implementing the `ForEachRegisteredThreadContextCb` callback for ASan.
2. Removes the blocking behaviour in the ASan `pthread_create` interceptor.
rdar://problem/63537240
Differential Revision: https://reviews.llvm.org/D95184
show more ...
|
| #
dd922bc2 |
| 21-Jan-2021 |
Dan Liew <[email protected]> |
[LSan] Introduce a callback mechanism to allow adding data reachable from ThreadContexts to the frontier.
This mechanism is intended to provide a way to treat the `arg` pointer of a created (but not
[LSan] Introduce a callback mechanism to allow adding data reachable from ThreadContexts to the frontier.
This mechanism is intended to provide a way to treat the `arg` pointer of a created (but not yet started) thread as reachable. In future patches this will be implemented in `GetAdditionalThreadContextPtrs`.
A separate implementation of `GetAdditionalThreadContextPtrs` exists for ASan and LSan runtimes because they need to be implemented differently in future patches.
rdar://problem/63537240
Differential Revision: https://reviews.llvm.org/D95183
show more ...
|
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
a8a85166 |
| 16-Sep-2020 |
Vitaly Buka <[email protected]> |
Revert "[Asan] Accept __lsan_ignore_object for redzone pointer"
We still keep AddrIsInside.
This reverts commit 1d70984fa220f966ddcecd7906c5f10368fe1b93.
|
| #
b42fa0c0 |
| 16-Sep-2020 |
Vitaly Buka <[email protected]> |
Revert "[Asan] Fix false leak report"
Additional investigated confirmed that issue is not about AddrIsInside, but missing registers.
This reverts commit 9d01612db48fa27d18c6320974b8d711572e5c67.
|
| #
943b0c8b |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[NFC][Asan] Remove chunk pointer from metadata
kAllocBegMagic should be enough. kAllocBegMagic is already set for the Secondary allocations. kAllocBegMagic is good enough for the Primary, but it's e
[NFC][Asan] Remove chunk pointer from metadata
kAllocBegMagic should be enough. kAllocBegMagic is already set for the Secondary allocations. kAllocBegMagic is good enough for the Primary, but it's even safer for the Secondary allocator as all allocated block are from mmap.
Depends on D87646.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87647
show more ...
|
| #
4540d3ba |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[NFC][Asan] Return uptr as before D87646
|
| #
08507d83 |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[Asan] Cleanup kAllocBegMagic setup
Make it atomic. Wrap it into class. Set it late after chunk is initialized. Reset it soon when the chunk is still valid.
Depends on D87645.
Reviewed By: morehou
[Asan] Cleanup kAllocBegMagic setup
Make it atomic. Wrap it into class. Set it late after chunk is initialized. Reset it soon when the chunk is still valid.
Depends on D87645.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87646
show more ...
|
| #
a61bb7f0 |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[NFC][Asan] Reorder bitfields
Depends on D87644.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87645
|
| #
cad961bb |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[NFC][Asan] Remove from_memalign and rz_log
Before D87643 they where used to optimize UsedSize(). Which was called frequently from leak scanner. It was also used for calls from QuarantineCallback bu
[NFC][Asan] Remove from_memalign and rz_log
Before D87643 they where used to optimize UsedSize(). Which was called frequently from leak scanner. It was also used for calls from QuarantineCallback but we have heavy get_allocator().Deallocate call there anyway.
Depends on D87643.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87644
show more ...
|
| #
d74e1f3a |
| 15-Sep-2020 |
Vitaly Buka <[email protected]> |
[NFC][Asan] Don't use MetaData for size
Now we have enough space in the ChunkHeader. 45 bit is enough for kMaxAllowedMallocSize.
Depends on D87642.
Reviewed By: morehouse
Differential Revision: h
[NFC][Asan] Don't use MetaData for size
Now we have enough space in the ChunkHeader. 45 bit is enough for kMaxAllowedMallocSize.
Depends on D87642.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87643
show more ...
|
| #
1d70984f |
| 14-Sep-2020 |
Vitaly Buka <[email protected]> |
[Asan] Accept __lsan_ignore_object for redzone pointer
The check that the pointer inside of the user part of the chunk does not adds any value, but it's the last user of AddrIsInside.
I'd like to s
[Asan] Accept __lsan_ignore_object for redzone pointer
The check that the pointer inside of the user part of the chunk does not adds any value, but it's the last user of AddrIsInside.
I'd like to simplify AsanChunk in followup patches.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87642
show more ...
|
| #
9d01612d |
| 14-Sep-2020 |
Vitaly Buka <[email protected]> |
[Asan] Fix false leak report
If user thread is in the allocator, the allocator may have no pointer into future user's part of the allocated block. AddrIsInside ignores such pointers and lsan reports
[Asan] Fix false leak report
If user thread is in the allocator, the allocator may have no pointer into future user's part of the allocated block. AddrIsInside ignores such pointers and lsan reports a false memory leak.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87552
show more ...
|
| #
3f7c3e84 |
| 11-Sep-2020 |
Vitaly Buka <[email protected]> |
[Asan] Fix __asan_update_allocation_context
Update both thread and stack. Update thread and stack as atomic operation. Keep all 32bit of TID as now we have enough bits.
Depends on D87135.
Reviewed
[Asan] Fix __asan_update_allocation_context
Update both thread and stack. Update thread and stack as atomic operation. Keep all 32bit of TID as now we have enough bits.
Depends on D87135.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87217
show more ...
|
| #
91c28bbe |
| 09-Sep-2020 |
Vitaly Buka <[email protected]> |
[Asan] Return nullptr for invalid chunks
CHUNK_ALLOCATED. CHUNK_QUARANTINE are only states which make AsanChunk useful for GetAsanChunk callers. In either case member of AsanChunk are not useful.
F
[Asan] Return nullptr for invalid chunks
CHUNK_ALLOCATED. CHUNK_QUARANTINE are only states which make AsanChunk useful for GetAsanChunk callers. In either case member of AsanChunk are not useful.
Fix few cases which didn't expect nullptr. Most of the callers are already expects nullptr.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D87135
show more ...
|