Bug in v13 due to "Fix corruption when relation truncation fails."

Поиск
Список
Период
Сортировка
От Yura Sokolov
Тема Bug in v13 due to "Fix corruption when relation truncation fails."
Дата
Msg-id f98aaa79-80b5-47c9-832a-31416a3a528b@postgrespro.ru
обсуждение исходный текст
Список 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



В списке pgsql-hackers по дате отправления: