diff options
author | Noah Misch <noah@leadboat.com> | 2019-04-05 00:00:52 -0700 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2019-04-05 00:00:55 -0700 |
commit | 9ec582b64d69fcd103e8a3bc13a621ca376db921 (patch) | |
tree | 8b8a63a87ddde10510670a5597fef03b547ea6c0 /src/backend/storage | |
parent | 1f63f69c43b5709cf6d8fe60be5e4f137c157316 (diff) | |
download | postgresql-9ec582b64d69fcd103e8a3bc13a621ca376db921.tar.gz postgresql-9ec582b64d69fcd103e8a3bc13a621ca376db921.zip |
Revert "Consistently test for in-use shared memory."
This reverts commits 2f932f71d9f2963bbd201129d7b971c8f5f077fd,
16ee6eaf80a40007a138b60bb5661660058d0422 and
6f0e190056fe441f7cf788ff19b62b13c94f68f3. The buildfarm has revealed
several bugs. Back-patch like the original commits.
Discussion: https://postgr.es/m/20190404145319.GA1720877@rfd.leadboat.com
Diffstat (limited to 'src/backend/storage')
-rw-r--r-- | src/backend/storage/ipc/ipci.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/storage/ipc/ipci.c b/src/backend/storage/ipc/ipci.c index d949bed9d51..32ac58f7d1a 100644 --- a/src/backend/storage/ipc/ipci.c +++ b/src/backend/storage/ipc/ipci.c @@ -85,9 +85,12 @@ RequestAddinShmemSpace(Size size) * through the same code as before. (Note that the called routines mostly * check IsUnderPostmaster, rather than EXEC_BACKEND, to detect this case. * This is a bit code-wasteful and could be cleaned up.) + * + * If "makePrivate" is true then we only need private memory, not shared + * memory. This is true for a standalone backend, false for a postmaster. */ void -CreateSharedMemoryAndSemaphores(int port) +CreateSharedMemoryAndSemaphores(bool makePrivate, int port) { PGShmemHeader *shim = NULL; @@ -152,7 +155,7 @@ CreateSharedMemoryAndSemaphores(int port) /* * Create the shmem segment */ - seghdr = PGSharedMemoryCreate(size, port, &shim); + seghdr = PGSharedMemoryCreate(size, makePrivate, port, &shim); InitShmemAccess(seghdr); @@ -167,9 +170,12 @@ CreateSharedMemoryAndSemaphores(int port) { /* * We are reattaching to an existing shared memory segment. This - * should only be reached in the EXEC_BACKEND case. + * should only be reached in the EXEC_BACKEND case, and even then only + * with makePrivate == false. */ -#ifndef EXEC_BACKEND +#ifdef EXEC_BACKEND + Assert(!makePrivate); +#else elog(PANIC, "should be attached to shared memory already"); #endif } |