On Thu, Jul 9, 2026 at 6:57 AM Thom Brown <[email protected]> wrote: > @@ -724,6 +725,14 @@ InitAuxiliaryProcess(void) > */ > PGSemaphoreReset(MyProc->sem); > > + /* Some aux processes are also advertised in ProcGlobal */ > + if (MyBackendType == B_AUTOVAC_LAUNCHER) > + pg_atomic_write_u32(&ProcGlobal->avLauncherProc, MyProcNumber); > > I'm looking for the places this gets called from. I can only see > auxprocess.c which the launcher doesn't go through. The same question > for similar code in AuxiliaryProcKill().
You're right. The autovacuum launcher does not go through AuxiliaryProcessMainCommon(), so it never calls InitAuxiliaryProcess(). Instead, it initializes its PGPROC with InitProcess(). As a result, the avLauncherProc assignment added to InitAuxiliaryProcess() is never executed for the launcher, and the corresponding cleanup in AuxiliaryProcKill() is never reached either. It seems we should move the avLauncherProc set/clear operations to InitProcess()/ProcKill() path, as in the attached patch. Regards, -- Fujii Masao
v1-0001-Advertise-autovacuum-launcher-s-ProcNumber-from-I.patch
Description: Binary data
