Re: BUG #17255: Server crashes in index_delete_sort_cmp() due to race condition with vacuum
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: pgsql-bugs@lists.postgresql.org, Peter Geoghegan <pg@bowt.ie>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>,
Alexander Lakhin <exclusion@gmail.com>,
Matthias van de Meent <boekewurm+postgres@gmail.com>,
PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>,
Mark Dilger <mark.dilger@enterprisedb.com>
Date: 2021-11-19T18:55:41Z
Lists: pgsql-bugs
Hi, On November 18, 2021 6:55:08 PM PST, Peter Geoghegan <pg@bowt.ie> wrote: >On Thu, Nov 18, 2021 at 4:36 PM Andres Freund <andres@anarazel.de> wrote: >> Attached is such an isolationtest. In an unmodified HEAD it ends up with > >> without amcheck detecting corruption at that point:(. > >The best way to teach amcheck to detect this kind of thing is bound to >be verification of HOT chains themselves: > >https://www.postgresql.org/message-id/flat/CAH2-Wznphpd490o%2Bur_bi6-YmC47hRu3Qyxod72RLqC-Uvuhcg%40mail.gmail.com That'd not reliably catch this kind of thing, because the hot chains easily can end up correct enough looking. >It would also be nice to teach verify_nbtree.c to look out for the >presence of index tuples that shouldn't be there during heapallindexed >verification, but that's significantly harder. I think what we really need is a pass that verifies that heap tuples reached via the index actually match the index key. There's just too many things that can break that. It'll not be blazingly fast, but there's just way too many things that other approaches just won't find. Andres -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
Commits
-
vacuumlazy.c: Standardize rel_pages terminology.
- e370f100f05d 15.0 landed
-
vacuumlazy.c: document vistest and OldestXmin.
- 73f6ec3d3c8d 15.0 landed
-
heap pruning: Only call BufferGetBlockNumber() once.
- c702d656a283 15.0 landed
-
Fix possible HOT corruption when RECENTLY_DEAD changes to DEAD while pruning.
- dad1539aec28 14.2 landed
- 18b87b201f73 15.0 landed
-
Assert redirect pointers are sensible after heap_page_prune().
- bb42bfb5ccb5 15.0 landed
-
Remove tupgone special case from vacuumlazy.c.
- 8523492d4e34 14.0 cited
-
Recycle nbtree pages deleted during same VACUUM.
- 9dd963ae2534 14.0 cited
-
snapshot scalability: Don't compute global horizons while building snapshots.
- dc7420c2c927 14.0 cited
-
Refactor heap_page_prune so that instead of changing item states on-the-fly,
- 6f10eb21118f 8.4.0 cited