Thread: Double invocation of InitPostmasterChild in bgworker with -DEXEC_BACKEND
Hi I discovered that if you build with -DEXEC_BACKEND on a Unix system and then try to start a background worker, it dies in InitializeLatchSupport: TRAP: FailedAssertion("!(selfpipe_readfd == -1)", File: "latch.c", Line: 161) That's because InitPostmasterChild is called twice. I can successfully use regular parallel query workers and bgworkers created by extensions if I apply the attached patch. -- Thomas Munro http://www.enterprisedb.com
Attachment
Thomas Munro <thomas.munro@enterprisedb.com> writes: > I discovered that if you build with -DEXEC_BACKEND on a Unix system > and then try to start a background worker, it dies in > InitializeLatchSupport: > TRAP: FailedAssertion("!(selfpipe_readfd == -1)", File: "latch.c", Line: 161) > That's because InitPostmasterChild is called twice. I can > successfully use regular parallel query workers and bgworkers created > by extensions if I apply the attached patch. Confirmed, fix pushed. I wonder if we should have a buildfarm member running the Unix EXEC_BACKEND code ... regards, tom lane
On Tue, Aug 2, 2016 at 6:40 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Thomas Munro <thomas.munro@enterprisedb.com> writes: >> I discovered that if you build with -DEXEC_BACKEND on a Unix system >> and then try to start a background worker, it dies in >> InitializeLatchSupport: > >> TRAP: FailedAssertion("!(selfpipe_readfd == -1)", File: "latch.c", Line: 161) > >> That's because InitPostmasterChild is called twice. I can >> successfully use regular parallel query workers and bgworkers created >> by extensions if I apply the attached patch. > > Confirmed, fix pushed. I wonder if we should have a buildfarm member > running the Unix EXEC_BACKEND code ... That would get my vote. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company