Re: Bug in v13 due to "Fix corruption when relation truncation fails."
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Yura Sokolov <y.sokolov@postgrespro.ru>
Cc: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, Thomas Munro <tmunro@postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>, Robert Haas <robertmhaas@gmail.com>
Date: 2025-01-08T03:30:51Z
Lists: pgsql-hackers
On Thu, Dec 26, 2024 at 01:10:59PM +0300, Yura Sokolov wrote: > Commit "Fix corruption when relation truncation fails." [0] makes > smgrtruncate be called in a critical section. Unfortunately in version 13 it > leads to occasional call to palloc0 inside of critical section, which > triggers Assert in debug builds: > > - smgrtruncate calls mdtruncate > - mdtruncate may call register_dirty_segment > - register_dirty_segment calls RegisterSyncRequest > - RegisterSyncRequest calls ForwardSyncRequest > - ForwardSyncRequest may call CompactCheckpointerRequestQueue > - CompactCheckpointerRequestQueue may call palloc0 ... > > In versions 14 and above CompactCheckpointerRequestQueue does check for > critical section due to commit "Fix bugs in MultiXact truncation" [1], > which were backported down to 14 version, but not 13. > > We caught it in our private tests, so it is real. > Cherry-pick of [1] from 14 version to 13 solves the issue. > > [0] https://git.postgresql.org/gitweb/?p=postgresql.git;h=2280912165d > [1] https://git.postgresql.org/gitweb/?p=postgresql.git;h=4c8e00ae9ae Ah, you're right. This chain of events is possible in REL_13_STABLE, and only there. Thomas? -- Michael
Commits
-
Back-patch b1ffe3ff into REL_13_STABLE.
- a722252ef1e1 13.19 landed