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 | 392ea22e9b322d790801740f4c7540c53dddf78b (patch) | |
tree | 42e5a062e1068ff7b863533b6d34e3e7cf78ed96 /src/backend/storage/ipc | |
parent | 064b3fcbdb198f04ee74e01dd48b3d75448b3c4c (diff) |
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/ipc')
-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 091244dde83..0c86a581c03 100644 --- a/src/backend/storage/ipc/ipci.c +++ b/src/backend/storage/ipc/ipci.c @@ -88,9 +88,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; @@ -163,7 +166,7 @@ CreateSharedMemoryAndSemaphores(int port) /* * Create the shmem segment */ - seghdr = PGSharedMemoryCreate(size, port, &shim); + seghdr = PGSharedMemoryCreate(size, makePrivate, port, &shim); InitShmemAccess(seghdr); @@ -184,9 +187,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 } |