Fix race condition in XLogLogicalInfo and ProcSignal initialization.

Masahiko Sawada <sawada.mshk@gmail.com>

From: Masahiko Sawada <sawada.mshk@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-28T21:15:58Z
Lists: pgsql-hackers

Attachments

Hi all,

I found a race condition issue between XLogLogicalInfo and ProcSignal
initialization while reviewing another issue[1]. I'm starting a
separate thread for the subject as it's not related to the issue
reported on that thread.

The issue is that child processes could miss the
PROCSIGNAL_BARRIER_UPDATE_XLOG_LOGICAL_INFO signal during the
initialization and end up in an inconsistent state because
InitializeProcessXLogLogicalInfo() is called (in BaseInit()) before
ProcSignalInit(). If the startup emits the signal to a process who is
between two steps, the process would not reflect the latest
XLogLogicalInfo state. I think we should move
InitializeProcessXLogLogicalInfo() after ProcSignalInit() like we do
so for InitLocalDataChecksumState().

I've attached the patch to fix this issue. Feedback is very welcome.

Regards,

[1] https://www.postgresql.org/message-id/CAD21AoBj%2BzKvgw_Q8gjr4YbKccW_uMe3OFQ5%2BKT246FHUuNXSQ%40mail.gmail.com
-- 
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

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 condition in XLogLogicalInfo and ProcSignal initialization.