The morning's first result is that during a failing run, the vacuum in test_setup sees
2022-04-15 16:01:43.064 CEST [4436:75] pg_regress/test_setup LOG: statement: VACUUM ANALYZE tenk1; 2022-04-15 16:01:43.064 CEST [4436:76] pg_regress/test_setup LOG: vacuuming "regression.public.tenk1" 2022-04-15 16:01:43.064 CEST [4436:77] pg_regress/test_setup STATEMENT: VACUUM ANALYZE tenk1; 2022-04-15 16:01:43.071 CEST [4436:78] pg_regress/test_setup LOG: finished vacuuming "regression.public.tenk1": index scans: 0 pages: 0 removed, 345 remain, 345 scanned (100.00% of total) tuples: 0 removed, 10000 remain, 0 are dead but not yet removable removable cutoff: 724, older by 26 xids when operation ended index scan not needed: 0 pages from table (0.00% of total) had 0 dead item identifiers removed avg read rate: 2.189 MB/s, avg write rate: 2.189 MB/s buffer usage: 695 hits, 2 misses, 2 dirtied WAL usage: 1 records, 0 full page images, 188 bytes system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s 2022-04-15 16:01:43.071 CEST [4436:79] pg_regress/test_setup STATEMENT: VACUUM ANALYZE tenk1; OldestXmin = 724 is too old to consider tenk1's contents as all-visible: regression=# select distinct xmin from tenk1; xmin ------ 749 (1 row) In fact, right after initdb pg_controldata shows Latest checkpoint's NextXID: 0:724 Latest checkpoint's oldestXID: 716 So there's no longer any doubt that something is holding back OldestXmin. I will go put some instrumentation into the code that's computing that. regards, tom lane