Re: Startup process deadlock: WaitForProcSignalBarriers vs aux process

Alexander Lakhin <exclusion@gmail.com>

From: Alexander Lakhin <exclusion@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Matthias van de Meent <boekewurm+postgres@gmail.com>, Thomas Munro <thomas.munro@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2026-04-29T18:00:00Z
Lists: pgsql-hackers
Dear Sawada-san,

28.04.2026 22:27, Masahiko Sawada wrote:
> On Mon, Apr 27, 2026 at 11:00 AM Alexander Lakhin <exclusion@gmail.com> wrote:
>> I've been puzzled by a buildfarm failure [1] with such symptoms for a while
>> and even reproduced it locally once, but couldn't gather more information
>> that time. But now that you have described the scenario, I can easily
>> reproduce the same test failure with:
>> --- a/src/backend/storage/ipc/procsignal.c
>> +++ b/src/backend/storage/ipc/procsignal.c
>> @@ -206,6 +206,7 @@ ProcSignalInit(const uint8 *cancel_key, int cancel_key_len)
>>          if (cancel_key_len > 0)
>>                  memcpy(slot->pss_cancel_key, cancel_key, cancel_key_len);
>>          slot->pss_cancel_key_len = cancel_key_len;
>> +pg_usleep(10000);
>>          pg_atomic_write_u32(&slot->pss_pid, MyProcPid);
> Thank you for testing this.
>
> I've attached a patch to address the issue. I haven't verified it
> across all versions yet, but I suspect it exists in the stable
> branches as well...

Thank you for the fix! It works for me too.

I was wondering why is that failure the only one of this kind on buildfarm
(in last two years, at least), so I've tried to reproduce it on
REL_18_STABLE... and failed.

Then I've bisected it on the master branch and found (your) commit that
introduced this behavior: 67c20979c from 2025-12-23.

Best regards,
Alexander



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix race between ProcSignalInit() and EmitProcSignalBarrier().

  2. Fix race condition in XLogLogicalInfo and ProcSignal initialization.