[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