| From: | David Rowley <drowley(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Recompute allocChunkLimit when reusing an AllocSet context |
| Date: | 2026-10-19 06:42:53 |
| Message-ID: | E1xIh5B-00000002DyY-3Acj@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Recompute allocChunkLimit when reusing an AllocSet context
AllocSet contexts with different maxBlockSize values can have the same
freeListIndex. When reusing a context from one of the context_freelists,
we updated maxBlockSize, but we failed to adjust allocChunkLimit, even
though that ordinarily depends on maxBlockSize. This could result in
some allocations being put on an external block when they shouldn't have
been, resulting in excessive malloc() calls, or if the allocChunkLimit was
left set higher than it should be, allocations could have resulted in
memory not being free()'d after pfree() due to the chunk having been put
on a multi-chunk block (these would still later be cleaned up when the
context is reset, so no memory leaks).
The repercussions of this are only inefficient use of memory and perhaps
some performance instability depending on which context happened to be
top of the freelist when a new AllocSet context was created.
To fix, we move the allocChunkLimit calculation code into a helper
function and call that to reset the allocChunkLimit when reusing a
context.
Author: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
Reviewed-by: Donghang Lin <donghanglin(at)gmail(dot)com>
Reviewed-by: David Rowley <dgrowleyml(at)gmail(dot)com>
Discussion: https://postgr.es/m/1D54961E-6BEF-411A-BFAD-610C3B18D7E7@gmail.com
Backpatch-through: 14
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/7b84cf8cfc7935d9ef275ea425c7bbd6e40b8c90
Modified Files
--------------
src/backend/utils/mmgr/aset.c | 75 +++++++++++++++++++++++++++++--------------
1 file changed, 51 insertions(+), 24 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Rowley | 2026-10-19 06:43:25 | pgsql: Recompute allocChunkLimit when reusing an AllocSet context |
| Previous Message | John Naylor | 2026-10-19 04:41:43 | pgsql: Fix use-after-free in jsonb_set_lax for Const NULL new_value |