Re: WAL record CRC calculated incorrectly because of underlying buffer modification

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Alexander Lakhin <exclusion(at)gmail(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Michael Paquier <michael(at)paquier(dot)xyz>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Subject: Re: WAL record CRC calculated incorrectly because of underlying buffer modification
Date: 2024-05-11 04:25:44
Message-ID: CA+hUKGJEtb65B+v2Vk25WbvvALH5DxL5Oye=DuhCVP8K1X3Obg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, May 11, 2024 at 4:00 PM Alexander Lakhin <exclusion(at)gmail(dot)com> wrote:
> 11.05.2024 06:26, Thomas Munro wrote:
> > Perhaps a no-image, no-change registered buffer should not be
> > including an image, even for XLR_CHECK_CONSISTENCY? It's actually
> > useless for consistency checking too I guess, this issue aside,
> > because it doesn't change anything so there is nothing to check.
>
> Yes, I think something wrong is here. I've reduced the reproducer to:

Does it reproduce if you do this?

- include_image = needs_backup || (info &
XLR_CHECK_CONSISTENCY) != 0;
+ include_image = needs_backup ||
+ ((info & XLR_CHECK_CONSISTENCY) != 0 &&
+ (regbuf->flags & REGBUF_NO_CHANGE) == 0);

Unfortunately the back branches don't have that new flag from 00d7fb5e
so, even if this is the right direction (not sure, I don't understand
this clean registered buffer trick) then ... but wait, why are there
are no failures like this in the back branches (yet at least)? Does
your reproducer work for 16? I wonder if something relevant changed
recently, like f56a9def. CC'ing Michael and Amit K for info.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alexander Lakhin 2024-05-11 05:00:00 Re: WAL record CRC calculated incorrectly because of underlying buffer modification
Previous Message Alexander Lakhin 2024-05-11 04:00:00 Re: WAL record CRC calculated incorrectly because of underlying buffer modification