diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 73d278f3b2c..0578e92ba9c 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -4900,11 +4900,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Close the postmaster's sockets (as soon as we know them) */ ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0); - /* - * Set reference point for stack-depth checking - */ - set_stack_base(); - /* * Set up memory area for GSS information. Mirrors the code in ConnCreate * for the non-exec case. diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index a7b7b12249d..6fe25c023a4 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -92,6 +92,15 @@ InitPostmasterChild(void) { IsUnderPostmaster = true; /* we are a postmaster subprocess now */ + /* + * Set reference point for stack-depth checking. We re-do that even in the + * !EXEC_BACKEND case, because there are some edge cases where processes + * are started with an alternative stack (e.g. starting bgworkers when + * running postgres using the rr debugger, as bgworkers are launched from + * signal handlers). + */ + set_stack_base(); + InitProcessGlobals(); /*