forked from OSchip/llvm-project
1f55fa0b99
There is no centralized store of information related to secondary allocations. Moreover the allocations themselves become inaccessible when the allocation is freed in order to implement UAF detection, so we can't store information there to be used in case of UAF anyway. Therefore our storage location for tracking stack traces of secondary allocations is a ring buffer. The ring buffer is copied to the process creating the crash dump when a fault occurs. The ring buffer is also used to store stack traces for primary deallocations. Stack traces for primary allocations continue to be stored inline. In order to support the scenario where an access to the ring buffer is interrupted by a concurrently occurring crash, the ring buffer is accessed in a lock-free manner. Differential Revision: https://reviews.llvm.org/D94212 |
||
---|---|---|
.. | ||
standalone | ||
CMakeLists.txt | ||
scudo_allocator.cpp | ||
scudo_allocator.h | ||
scudo_allocator_combined.h | ||
scudo_allocator_secondary.h | ||
scudo_crc32.cpp | ||
scudo_crc32.h | ||
scudo_errors.cpp | ||
scudo_errors.h | ||
scudo_flags.cpp | ||
scudo_flags.h | ||
scudo_flags.inc | ||
scudo_interface_internal.h | ||
scudo_malloc.cpp | ||
scudo_new_delete.cpp | ||
scudo_platform.h | ||
scudo_termination.cpp | ||
scudo_tsd.h | ||
scudo_tsd_exclusive.cpp | ||
scudo_tsd_exclusive.inc | ||
scudo_tsd_shared.cpp | ||
scudo_tsd_shared.inc | ||
scudo_utils.cpp | ||
scudo_utils.h |