mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-19 15:17:17 +03:00
With profiling active, xallocx may decline to grow an allocation that is not page-aligned. The profiling path can require sampled xallocx growth to use page-aligned pointers; otherwise it can return the old usable size without committing the purged tail. Observed on Darwin, where decommit/commit are real VM state changes. The shrink/purge half succeeds and records a decommit, then the profiling-limited grow skips the matching commit. This is not Darwin-specific. Linux no-overcommit should expose the same mismatch. Usual Linux overcommit behavior papers it over by making commit/decommit hooks report unsupported, so both sides of the old equality check stay false. Relax the default-path assertion only while profiling is active, and add a page-aligned case that still requires xallocx shrink and grow to succeed, preserving commit/merge coverage. Assisted-by: Codex gpt-5.5 xhigh |
||
|---|---|---|
| .. | ||
| cpp | ||
| aligned_alloc.c | ||
| allocated.c | ||
| extent.c | ||
| extent.sh | ||
| free_sized.c | ||
| malloc.c | ||
| mallocx.c | ||
| mallocx.sh | ||
| MALLOCX_ARENA.c | ||
| overflow.c | ||
| posix_memalign.c | ||
| rallocx.c | ||
| sdallocx.c | ||
| slab_sizes.c | ||
| slab_sizes.sh | ||
| smallocx.c | ||
| smallocx.sh | ||
| thread_arena.c | ||
| thread_tcache_enabled.c | ||
| xallocx.c | ||
| xallocx.sh | ||