summaryrefslogtreecommitdiff
path: root/src/backend/storage/ipc/dsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/ipc/dsm.c')
-rw-r--r--src/backend/storage/ipc/dsm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c
index e9e9fae3eb..ce6f07d4c5 100644
--- a/src/backend/storage/ipc/dsm.c
+++ b/src/backend/storage/ipc/dsm.c
@@ -397,6 +397,7 @@ static void
dsm_backend_startup(void)
{
#ifdef EXEC_BACKEND
+ if (IsUnderPostmaster)
{
void *control_address = NULL;
@@ -496,8 +497,12 @@ dsm_create(Size size, int flags)
FreePageManager *dsm_main_space_fpm = dsm_main_space_begin;
bool using_main_dsm_region = false;
- /* Unsafe in postmaster (and pointless in a stand-alone backend). */
- Assert(IsUnderPostmaster);
+ /*
+ * Unsafe in postmaster. It might seem pointless to allow use of dsm in
+ * single user mode, but otherwise some subsystems will need dedicated
+ * single user mode code paths.
+ */
+ Assert(IsUnderPostmaster || !IsPostmasterEnvironment);
if (!dsm_init_done)
dsm_backend_startup();