Hi, On Sat, Mar 08, 2025 at 10:57:38AM +0900, Michael Paquier wrote: > On Fri, Mar 07, 2025 at 08:33:04AM +0000, Bertrand Drouvot wrote: > > But when it's time to flush, then pgstat_backend_have_pending_cb() checks > > for zeros in PendingBackendStats *without* any check on the backend type. > > > > I think the issue is "masked" on HEAD because PendingBackendStats is > > probably automatically initialized with zeros (as being a static variable at > > file scope). > > If this weren't true, we would have a lot of problems in more places > than this one.
Yeah I fully agree and I think that was fine. I just added "probably" as cautious wording, as the "We assume this initializes to zeroes" comments that have been removed in 07e9e28b56d and 88f5ebbbee3 for example. > It does not hurt to add an initialization at the top > of pgstat_backend.c for PendingBackendStats, to document the > intention, while we're on it. -static PgStat_BackendPending PendingBackendStats; +static PgStat_BackendPending PendingBackendStats = {0}; Not sure about this change: I think that that would not always work should PgStat_BackendPending contains padding. I mean there is no guarantee that would initialize padding bytes to zeroes (if any). That would not be an issue should we only access the struct fields in the code, but that's not the case as we're making use of pg_memory_is_all_zeros() on it. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com