Re: Fix race condition in XLogLogicalInfo and ProcSignal initialization.
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-29T01:28:45Z
Lists: pgsql-hackers
> On Apr 29, 2026, at 05:15, Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > 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 think this is correct. After moving InitializeProcessXLogLogicalInfo() out of BaseInit(), background worker processes (BackgroundWorkerMain) will no longer hold a valid value of XLogLogicalInfo, but I guess that is fine as those processes don’t call ProcSignalInit() anyway. > > I've attached the patch to fix this issue. Feedback is very welcome. > Just found a typo: ``` + * These initialization intentionally happens afater initializing the ``` afater => after Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix race condition in XLogLogicalInfo and ProcSignal initialization.
- b384cdb2745b 19 (unreleased) landed