diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index d16d881e57..2ab7ed7dc3 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -4275,6 +4275,15 @@ BackendStartup(Port *port) /* Perform additional initialization and collect startup packet */ BackendInitialize(port); + /* + * Create a per-backend PGPROC struct in shared memory. We must do + * this before we can use LWLocks. In the !EXEC_BACKEND case (here) + * this could be delayed a bit further, but EXEC_BACKEND needs to do + * stuff with LWLocks before PostgresMain(), so we do it here as well + * for symmetry. + */ + InitProcess(); + /* And run the backend */ BackendRun(port); } diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 489e27f99a..d85e10d9ce 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -4058,20 +4058,13 @@ PostgresMain(int argc, char *argv[], * point during startup that postmaster does so. */ PgStartTime = GetCurrentTimestamp(); - } - /* - * Create a per-backend PGPROC struct in shared memory, except in the - * EXEC_BACKEND case where this was done in SubPostmasterMain. We must do - * this before we can use LWLocks (and in the EXEC_BACKEND case we already - * had to do some stuff with LWLocks). - */ -#ifdef EXEC_BACKEND - if (!IsUnderPostmaster) + /* + * Create a per-backend PGPROC struct in shared memory. We must do + * this before we can use LWLocks. + */ InitProcess(); -#else - InitProcess(); -#endif + } /* Early initialization */ BaseInit();