]> granicus.if.org Git - postgresql/commitdiff
Remove duplicate InitPostmasterChild() call while starting a bgworker.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Aug 2016 22:39:14 +0000 (18:39 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Aug 2016 22:39:14 +0000 (18:39 -0400)
This is apparently harmless on Windows, but on Unix it results in an
assertion failure.  We'd not noticed because this code doesn't get
used on Unix unless you build with -DEXEC_BACKEND.  Bug was evidently
introduced by sloppy refactoring in commit 31c453165.

Thomas Munro

Discussion: <CAEepm=1VOnbVx4wsgQFvj94hu9jVt2nVabCr7QiooUSvPJXkgQ@mail.gmail.com>

src/backend/postmaster/postmaster.c

index 19d11e0e0dafdee0d766be016263c2bf810e4541..1813f8ca1d1a130323765547d775e1b4dab7932f 100644 (file)
@@ -4806,8 +4806,6 @@ SubPostmasterMain(int argc, char *argv[])
                /* do this as early as possible; in particular, before InitProcess() */
                IsBackgroundWorker = true;
 
-               InitPostmasterChild();
-
                /* Close the postmaster's sockets */
                ClosePostmasterPorts(false);
 
@@ -4820,8 +4818,10 @@ SubPostmasterMain(int argc, char *argv[])
                /* Attach process to shared data structures */
                CreateSharedMemoryAndSemaphores(false, 0);
 
+               /* Fetch MyBgworkerEntry from shared memory */
                shmem_slot = atoi(argv[1] + 15);
                MyBgworkerEntry = BackgroundWorkerEntry(shmem_slot);
+
                StartBackgroundWorker();
        }
        if (strcmp(argv[1], "--forkarch") == 0)