Re: VM corruption on standby

Kirill Reshke <reshkekirill@gmail.com>

From: Kirill Reshke <reshkekirill@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Thomas Munro <thomas.munro@gmail.com>, Andrey Borodin <x4mmm@yandex-team.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Melanie Plageman <melanieplageman@gmail.com>, Michael Paquier <michael@paquier.xyz>
Date: 2025-08-20T05:03:10Z
Lists: pgsql-hackers
On Wed, 20 Aug 2025 at 00:50, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Kirill Reshke <reshkekirill@gmail.com> writes:

> > I revert this commit (these were conflicts but i resolved them) and
> > added assert for crit sections in WaitEventSetWait.
>
> Your patch still contains some conflict markers :-(.  Attached is
> a corrected version, just to save other people the effort of fixing
> the diffs themselves.

Oh, yes, it indeed contains some conflict markers, but surprisingly
compiles without errors, that's why i missed it.
Attached looks good to me.

>
> While 'make check' is okay with this assertion, 'make check-world'
> still falls over if you have injection points enabled, because
> src/test/modules/test_slru/t/001_multixact.pl also had the
> cute idea of putting an injection-point wait inside a critical
> section.  I did not find any other failures though.

Okay, we probably need to reimplement the wait function in injection
point without latch, got it.

> I'm inclined to think that we do want to prohibit WaitEventSetWait
> inside a critical section --- it just seems like a bad idea all
> around, even without considering this specific failure mode.
> Therefore, I vote for reverting bc22dc0e0.  Hopefully only
> temporarily, but it's too late to figure out another way for v18,
> and I don't think that bc22dc0e0 is such an essential improvement
> that we can't afford to give it up for v18.

+1

-- 
Best regards,
Kirill Reshke



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Revert "Get rid of WALBufMappingLock"

  2. Get rid of WALBufMappingLock

  3. Split WaitEventSet functions to separate source file

  4. Add WL_EXIT_ON_PM_DEATH pseudo-event.