[compiler-rt] [scudo] Allow to resize allocation ring buffer (PR #82683)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 11 18:15:49 PDT 2024
================
@@ -1594,12 +1600,33 @@ class Allocator {
RB->StackDepotSize = StackDepotSize;
RB->RawStackDepotMap = DepotMap;
- atomic_store(&RingBufferAddress, reinterpret_cast<uptr>(RB),
- memory_order_release);
+ swapOutRingBuffer(RB);
static_assert(sizeof(AllocationRingBuffer) %
alignof(typename AllocationRingBuffer::Entry) ==
0,
"invalid alignment");
+ return true;
+ }
+
+ void swapOutRingBuffer(AllocationRingBuffer *NewRB) {
+ // To allow resizeRingBuffer to be called in a multi-threaded context by apps,
+ // we do not actually unmap, but only madvise(DONTNEED) the pages. That way,
+ // straggler threads will not crash.
----------------
fmayer wrote:
An app developer explicitly asked for this to be a mallopt, not a manifest attribute.
https://github.com/llvm/llvm-project/pull/82683
More information about the llvm-commits
mailing list