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 <[email protected]> wrote: > Hello! > > Josh Curtis <[email protected]>: > > 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. >
