Greetings of the day,

I was able to reproduce the bug locally and have applied both *TYPEALIGN(8192,
size) *and the patch that Chao attached in his email.

I have tested both approaches locally.

*TYPEALIGN(8192, size) *does handle the rounding more concisely, and I
confirmed that it leaves an already 8192-byte-aligned value unchanged.

The proposed conditional *add_size() *change also fixes the issue, while
retaining the overflow protection provided by *add_size()*.

So I think the main question is whether overflow protection is important
here. If it is, I would prefer the proposed conditional change; otherwise,
*TYPEALIGN()* seems cleaner.

With regards,
Osama Abdul Qader

On Mon, Sep 14, 2026 at 2:48 PM Chao Li <[email protected]> wrote:

>
>
> > On Sep 14, 2026, at 16:14, Matthias van de Meent <
> [email protected]> wrote:
> >
> > On Mon, 14 Sept 2026 at 09:19, Chao Li <[email protected]> wrote:
> >>
> >> Hi,
> >>
> >> I just noticed this item when I went through my TODO list today. I
> remember finding this issue a few months ago, but at that time, only bugs
> new to PG19 were being processed, so I put it on my TODO list.
> >>
> >> This is a small issue, but it has been there for many years.
> CalculateShmemSize() has logic to round size to a multiple of a typical
> page size:
> >> ```
> >>        /* might as well round it off to a multiple of a typical page
> size */
> >>        size = add_size(size, 8192 - (size % 8192));
> >> ```
> >>
> >> When size is already a multiple of 8192, this add_size() call is not
> needed; it only results in an extra 8192 bytes being allocated in shared
> memory. The fix is simple:
> >> ```
> >>        if (size % 8192 != 0)
> >>                /* might as well round it off to a multiple of a typical
> page size */
> >>                size = add_size(size, 8192 - (size % 8192));
> >> ```
> >>
> >> I put the comment within the if clause because I remember Tom once
> mentioning that this would be the preferred style.
> >
> > Shouldn't a TYPEALIGN(8192, size) do the trick here, and do it more
> > concise and better?
> >
>
> TYPEALIGN(8192, size) would handle rounding more concisely, but I see
> add_size() has an overflow protection, maybe that matters?
>
> Best regards,
> --
> Chao Li (Evan)
> HighGo Software Co., Ltd.
> https://www.highgo.com/
>
>
>
>
>
>
>

Reply via email to