llvm-project/compiler-rt/lib/scudo
Peter Collingbourne 1f55fa0b99 scudo: Add support for tracking stack traces of secondary allocations.
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
2021-03-09 11:43:03 -08:00
..
standalone scudo: Add support for tracking stack traces of secondary allocations. 2021-03-09 11:43:03 -08:00
CMakeLists.txt [GWP-ASan] Crash Handler API. 2020-02-05 15:39:17 -08:00
scudo_allocator.cpp [GWP-ASan] Add inbuilt options parser. 2021-01-15 12:57:05 -08:00
scudo_allocator.h [scudo][NFC] Remove unneeded template from scudo::CombinedAllocator 2019-05-01 19:36:26 +00:00
scudo_allocator_combined.h [scudo][NFC] Remove unneeded template from scudo::CombinedAllocator 2019-05-01 19:36:26 +00:00
scudo_allocator_secondary.h Update compiler-rt cpplint.py 2019-09-11 21:33:06 +00:00
scudo_crc32.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_crc32.h [compiler-rt] Replace INLINE with inline 2020-09-17 16:24:20 +02:00
scudo_errors.cpp Remove NOLINTs from compiler-rt 2019-09-11 23:19:48 +00:00
scudo_errors.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_flags.cpp Improve error message when '=' is missing in {ASAN,...}_OPTIONS. 2019-06-15 01:37:14 +00:00
scudo_flags.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_flags.inc [scudo] Tuning changes based on feedback from current use 2019-01-24 15:56:54 +00:00
scudo_interface_internal.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_malloc.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_new_delete.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_platform.h [scudo] Tuning changes based on feedback from current use 2019-01-24 15:56:54 +00:00
scudo_termination.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd.h [compiler-rt] Replace INLINE with inline 2020-09-17 16:24:20 +02:00
scudo_tsd_exclusive.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_exclusive.inc Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_shared.cpp [scudo] Correct a behavior on the shared TSD registry 2019-06-25 19:58:11 +00:00
scudo_tsd_shared.inc Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_utils.cpp [compiler-rt] Replace INLINE with inline 2020-09-17 16:24:20 +02:00
scudo_utils.h [compiler-rt] Replace INLINE with inline 2020-09-17 16:24:20 +02:00