Thread: [COMMITTERS] pgsql: Fix shm_toc.c to always return buffer-aligned memory.
[COMMITTERS] pgsql: Fix shm_toc.c to always return buffer-aligned memory.
From
Heikki Linnakangas
Date:
Fix shm_toc.c to always return buffer-aligned memory. Previously, if you passed a non-aligned size to shm_toc_create(), the memory returned by shm_toc_allocate() would be similarly non-aligned. This was exposed by commit 3cda10f41b, which allocated structs containing a pg_atomic_uint64 field with shm_toc_allocate(). On systems with MAXIMUM_ALIGNOF = 4, such structs still need to be 8-bytes aligned, but the memory returned by shm_toc_allocate() was only 4-bytes aligned. It's quite bogus that we abuse BUFFERALIGN to align the structs for pg_atomic_uint64. It doesn't really have anything to do with buffers. But that's a separate issue. This ought to fix the buildfarm failures on 32-bit x86 systems. Discussion: https://www.postgresql.org/message-id/7e0a73a5-0df9-1859-b8ae-9acf122dc38d@iki.fi Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/ac883ac453e9c479f397780918f235c440b7a02f Modified Files -------------- src/backend/storage/ipc/shm_toc.c | 24 +++++++++++++++++++----- src/include/c.h | 1 + 2 files changed, 20 insertions(+), 5 deletions(-)