diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index a5217773ffc..f3a7a007f77 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -334,6 +334,12 @@ BootstrapModeMain(int argc, char *argv[], bool check_only) CreateSharedMemoryAndSemaphores(); + /* + * Estimate number of openable files. This is essential too in --check + * mode, because on some platforms semaphores count as open files. + */ + set_max_safe_fds(); + /* * XXX: It might make sense to move this into its own function at some * point. Right now it seems like it'd cause more code duplication than diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 3ce088f0bad..85902788181 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -4099,8 +4099,18 @@ PostgresSingleUserMain(int argc, char *argv[], */ InitializeWalConsistencyChecking(); + /* + * Create shared memory etc. (Nothing's really "shared" in single-user + * mode, but we must have these data structures anyway.) + */ CreateSharedMemoryAndSemaphores(); + /* + * Estimate number of openable files. This must happen after setting up + * semaphores, because on some platforms semaphores count as open files. + */ + set_max_safe_fds(); + /* * Remember stand-alone backend startup time,roughly at the same point * during startup that postmaster does so.