Re: VM corruption on standby

Kirill Reshke <reshkekirill@gmail.com>

From: Kirill Reshke <reshkekirill@gmail.com>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Melanie Plageman <melanieplageman@gmail.com>
Date: 2025-08-14T06:35:15Z
Lists: pgsql-hackers

Attachments

On Thu, 14 Aug 2025 at 10:41, Kirill Reshke <reshkekirill@gmail.com> wrote:
>
o I am trying to reproduce is following:
>
> 1) Some process p1 locks some buffer (name it buf1), enters CRIT
> section, calls MarkBufferDirty and hangs inside XLogInsert on CondVar
> in (GetXLogBuffer -> AdvanceXLInsertBuffer).
> 2) CHECKPOINT (p2) stars and tries to FLUSH dirty buffers, awaiting lock on buf1
> 3) Postmaster kill-9-ed
> 4) signal of postmaster death delivered to p1, it wakes up in
> WaitLatch/WaitEventSetWaitBlock functions, checks postmaster
> aliveness, and exits releasing all locks.
> 5) p2 acquires locks  on buf1 and flushes it to disk.
> 6) signal of postmaster death delivered to p2, p2 exits.

Andrey told me to create CF entry and attach fix, so doing it

[0] https://commitfest.postgresql.org/patch/5964/




-- 
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.