From: | Josh Curtis <jcurtis825(at)gmail(dot)com> |
---|---|
To: | Mihail Nikalayeu <mihailnikalayeu(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Fix race condition in SSI when reading PredXact->SxactGlobalXmin |
Date: | 2025-10-22 03:07:10 |
Message-ID: | CAEkjoh2BTMPF_TgR7TRtxZAsWdN7qRvvCoM9E7RuqUfYf28v7g@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Thanks for taking a look.
I tried adding a reproduction with injection points, but had some trouble
with them. I'll give it another go this weekend.
I guess one of the commitfest entries should be deleted? I had already made
one already. I don't see a way to do that though.
https://commitfest.postgresql.org/patch/6037/
Josh
On Mon, Oct 20, 2025 at 5:55 PM Mihail Nikalayeu <mihailnikalayeu(at)gmail(dot)com>
wrote:
> Hello!
>
> Josh Curtis <jcurtis825(at)gmail(dot)com>:
> > This is definitely a bit more complex. It requires that
> SetNewSxactGlobalXmin is never called when SxactGlobalXmin is invalid to
> prevent readers from seeing an invalid transaction ID when they should see
> a valid one -- I think this is the case now since before
> SetNewSxactGlobalXmin is called postgres checks that
> PredXact->SxactGlobalXminCount > 0. I assume this entails that
> SxactGlobalXmin is valid, but I have not checked every place the two
> variables are modified.
>
> Such logic feels fragile to me. Maybe add a special flag like
> 'PredXact->SxactGlobalSkipAllowed' which will be updated to 'true' by
> SetNewSxactGlobalXmin, and dropped to 'false' by functions affecting
> PredXact->activeList?
> But I prefer the first solution anyway.
>
> Best regards,
> Mikhail.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tatsuo Ishii | 2025-10-22 03:14:11 | Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options |
Previous Message | jian he | 2025-10-22 02:39:41 | Re: Why cannot alter a column's type when it's used by a generated column |