From e76e047b47b40c8f3737f69976f481f4050e35da Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 27 Mar 2026 18:36:19 +0200 Subject: [PATCH v1 1/8] Use ShmemInitStruct to allocate shmem for semaphores This makes them visible visible in pg_shmem_allocations --- src/backend/port/posix_sema.c | 4 +++- src/backend/port/sysv_sema.c | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/backend/port/posix_sema.c b/src/backend/port/posix_sema.c index e368e5ee7ed..40205b7d400 100644 --- a/src/backend/port/posix_sema.c +++ b/src/backend/port/posix_sema.c @@ -196,6 +196,7 @@ void PGReserveSemaphores(int maxSemas) { struct stat statbuf; + bool found; /* * We use the data directory's inode number to seed the search for free @@ -216,7 +217,8 @@ PGReserveSemaphores(int maxSemas) #else sharedSemas = (PGSemaphore) - ShmemAlloc(PGSemaphoreShmemSize(maxSemas)); + ShmemInitStruct("Semaphores", PGSemaphoreShmemSize(maxSemas), &found); + Assert(!found); #endif numSems = 0; diff --git a/src/backend/port/sysv_sema.c b/src/backend/port/sysv_sema.c index 86c4d359ef7..4b2bf84072f 100644 --- a/src/backend/port/sysv_sema.c +++ b/src/backend/port/sysv_sema.c @@ -330,6 +330,7 @@ void PGReserveSemaphores(int maxSemas) { struct stat statbuf; + bool found; /* * We use the data directory's inode number to seed the search for free @@ -344,7 +345,9 @@ PGReserveSemaphores(int maxSemas) DataDir))); sharedSemas = (PGSemaphore) - ShmemAlloc(PGSemaphoreShmemSize(maxSemas)); + ShmemInitStruct("Semaphores", PGSemaphoreShmemSize(maxSemas), &found); + Assert(!found); + numSharedSemas = 0; maxSharedSemas = maxSemas; -- 2.47.3