From: Michael Paquier Date: Thu, 11 Dec 2025 05:11:06 +0000 (+0900) Subject: pg_buffercache: Fix memory allocation formula X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=3f83de20ba2e1d4bd557d92b3436ca04b7c947a8;p=users%2Frhaas%2Fpostgres.git pg_buffercache: Fix memory allocation formula The code over-allocated the memory required for os_page_status, relying on uint64 for its element size instead of an int, hence doubling what was required. This could mean quite a lot of memory if dealing with a lot of NUMA pages. Oversight in ba2a3c2302f1. Author: David Geier Discussion: https://postgr.es/m/ad0748d4-3080-436e-b0bc-ac8f86a3466a@gmail.com Backpatch-through: 18 --- diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 702307a49e..e18fed2204 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -383,7 +383,7 @@ pg_buffercache_os_pages_internal(FunctionCallInfo fcinfo, bool include_numa) /* Used to determine the NUMA node for all OS pages at once */ os_page_ptrs = palloc0(sizeof(void *) * os_page_count); - os_page_status = palloc(sizeof(uint64) * os_page_count); + os_page_status = palloc(sizeof(int) * os_page_count); /* * Fill pointers for all the memory pages. This loop stores and