SIGN IN SIGN UP

gh-144319: Fix huge page leak in datastack chunk allocator (#147963)

Fix huge page leak in datastack chunk allocator

The original fix rounded datastack chunk allocations in pystate.c so that
_PyObject_VirtualFree() would receive the full huge page mapping size.

Change direction and move that logic into _PyObject_VirtualAlloc() and
_PyObject_VirtualFree() instead. The key invariant is that munmap() must see
the full mapped size, so alloc and free now apply the same platform-specific
rounding in the allocator layer.

This keeps _PyStackChunk bookkeeping in requested-size units, avoids a
hardcoded 2 MB assumption, and also covers other small virtual-memory users
such as the JIT tracer state allocation in optimizer.c.
P
Pablo Galindo Salgado committed
77fc2f5a5e4ca92c609b87425a4080b71c5fa188
Parent: 668c572
Committed by GitHub <noreply@github.com> on 4/5/2026, 3:29:38 PM