Обсуждение: Double invocation of InitPostmasterChild in bgworker with -DEXEC_BACKEND

Поиск
Список
Период
Сортировка

Double invocation of InitPostmasterChild in bgworker with -DEXEC_BACKEND

От
Thomas Munro
Дата:
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

Вложения

Re: Double invocation of InitPostmasterChild in bgworker with -DEXEC_BACKEND

От
Tom Lane
Дата:
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



Re: Double invocation of InitPostmasterChild in bgworker with -DEXEC_BACKEND

От
Robert Haas
Дата:
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