InitProcess() relies on IsBackgroundWorker to decide whether the PGPROC
for a new backend should be taken from ProcGlobal's freeProcs or from
bgworkerFreeProcs. In EXEC_BACKEND builds, InitProcess() is called
sooner than in non-EXEC_BACKEND builds, and IsBackgroundWorker wasn't
getting initialized soon enough.
Report by Noah Misch. Diagnosis and fix by me.
{
int shmem_slot;
+ /* do this as early as possible; in particular, before InitProcess() */
+ IsBackgroundWorker = true;
+
/* Close the postmaster's sockets */
ClosePostmasterPorts(false);