From: | Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru> |
---|---|
To: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Thomas Munro <tmunro(at)postgresql(dot)org>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Michael Paquier <michael(at)paquier(dot)xyz>, Robert Haas <robertmhaas(at)gmail(dot)com> |
Subject: | Bug in v13 due to "Fix corruption when relation truncation fails." |
Date: | 2024-12-26 10:10:59 |
Message-ID: | f98aaa79-80b5-47c9-832a-31416a3a528b@postgrespro.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Good day.
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
------
regards,
Yura Sokolov aka funny-falcon
From | Date | Subject | |
---|---|---|---|
Next Message | Nazir Bilal Yavuz | 2024-12-26 11:41:26 | Re: Make pg_stat_io view count IOs as bytes instead of blocks |
Previous Message | Ilia Evdokimov | 2024-12-26 09:40:52 | Removing unused parameter in compute_expr_stats |