Re: repack: fix uninitialized DecodingWorkerShared.initialized

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: Antonin Houska <ah(at)cybertec(dot)at>
Cc: Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: repack: fix uninitialized DecodingWorkerShared.initialized
Date: 2026-04-17 03:41:37
Message-ID: A3564E6C-CF19-4770-A89B-00FCF0A647D1@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On Apr 15, 2026, at 23:07, Antonin Houska <ah(at)cybertec(dot)at> wrote:
>
> Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> wrote:
>
>> I have not reviewed the repack-related patches before. Recently, I started trying to understand how repack works and trace through the code.
>
> Thanks, I appreciate that!
>
>> While tracing start_repack_decoding_worker(), I noticed something suspicious:
>>
>> ```
>> seg = dsm_create(size, 0);
>> shared = (DecodingWorkerShared *) dsm_segment_address(seg);
>> shared->lsn_upto = InvalidXLogRecPtr;
>> shared->done = false;
>> SharedFileSetInit(&shared->sfs, seg);
>> shared->last_exported = -1;
>> SpinLockInit(&shared->mutex);
>> shared->dbid = MyDatabaseId;
>> ```
>>
>> Here, the code creates a shared-memory segment and lets “shared" point to that memory. It then initializes some fields of “shared". However, later code reads shared->initialized, but this field was not initialized:
>
> The problem was noticed earlier this week and I already posted a fix [1].
>
>> For the fix, since start_repack_decoding_worker() is not on a hot path, I think it is fine to zero the whole shared struct explicitly, and then initialize the non-zero fields afterwards.
>
> Although not strongly, I prefer setting individual fields explicitly.
>
>
> [1] https://www.postgresql.org/message-id/182883.1776073323%40localhost
>
> --
> Antonin Houska
> Web: https://www.cybertec-postgresql.com

I saw 05c401d5786a05ea630e884ffa492aa01683d15b has fixed this issue, so this patch is no longer needed.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Zhijie Hou (Fujitsu) 2026-04-17 03:46:31 RE: repack: fix a bug to reject deferrable primary key fallback for concurrent mode
Previous Message Zhijie Hou (Fujitsu) 2026-04-17 03:35:28 RE: Fix stats reporting delays in logical parallel apply worker