On Mon, Sep 12, 2022 at 10:44:38AM +1200, Thomas Munro wrote:
> On Sat, Sep 10, 2022 at 5:44 PM Justin Pryzby <pry...@telsasoft.com> wrote:
> > < 2022-09-09 19:37:25.835 CDT telsasoft >ERROR:  MultiXactId 133553154 has 
> > not been created yet -- apparent wraparound
> 
> I guess what happened here is that after one of your (apparently
> several?) OOM crashes, crash recovery didn't run all the way to the
> true end of the WAL due to the maintenance_io_concurrency=0 bug.  In
> the case you reported, it couldn't complete an end-of-recovery
> checkpoint until you disabled recovery_prefetch, but that's only
> because of the somewhat unusual way that vismap pages work.  In
> another case it might have been able to (bogusly) complete a
> checkpoint, leaving things in an inconsistent state.

I think you're saying is that this can be explained by the
io_concurrency bug in recovery_prefetch, if run under 15b3.

But yesterday I started from initdb and restored this cluster from backup, and
started up sqlsmith, and sent some kill -9, and now got more corruption.
Looks like it took ~10 induced crashes before this happened.

At the moment, I have no reason to believe this issue is related to
prefetch_recovery; I am wondering about changes to vacuum.

< 2022-09-11 20:19:03.071 CDT telsasoft >ERROR:  MultiXactId 732646 has not 
been created yet -- apparent wraparound
< 2022-09-11 20:24:00.530 CDT telsasoft >ERROR:  MultiXactId 732646 has not 
been created yet -- apparent wraparound

Program terminated with signal 6, Aborted.
#0  0x00007f413716b1f7 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install 
glibc-2.17-196.el7_4.2.x86_64 libgcc-4.8.5-44.el7.x86_64 
libxml2-2.9.1-6.el7_9.6.x86_64 lz4-1.8.3-1.el7.x86_64 
xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt
#0  0x00007f413716b1f7 in raise () from /lib64/libc.so.6
#1  0x00007f413716c8e8 in abort () from /lib64/libc.so.6
#2  0x0000000000962c5c in ExceptionalCondition 
(conditionName=conditionName@entry=0x9ce238 "P_ISLEAF(opaque) && 
!P_ISDELETED(opaque)", errorType=errorType@entry=0x9bad97 "FailedAssertion", 
    fileName=fileName@entry=0x9cdcd1 "nbtpage.c", 
lineNumber=lineNumber@entry=1778) at assert.c:69
#3  0x0000000000507e34 in _bt_rightsib_halfdeadflag 
(rel=rel@entry=0x7f4138a238a8, leafrightsib=leafrightsib@entry=53) at 
nbtpage.c:1778
#4  0x0000000000507fba in _bt_mark_page_halfdead (rel=rel@entry=0x7f4138a238a8, 
leafbuf=leafbuf@entry=13637, stack=stack@entry=0x144ca20) at nbtpage.c:2121
#5  0x000000000050af1d in _bt_pagedel (rel=rel@entry=0x7f4138a238a8, 
leafbuf=leafbuf@entry=13637, vstate=vstate@entry=0x7ffef18de8b0) at 
nbtpage.c:2004
#6  0x000000000050c996 in btvacuumpage (vstate=vstate@entry=0x7ffef18de8b0, 
scanblkno=scanblkno@entry=36) at nbtree.c:1342
#7  0x000000000050caf8 in btvacuumscan (info=info@entry=0x7ffef18deac0, 
stats=stats@entry=0x142fb70, callback=callback@entry=0x67e89b <vac_tid_reaped>, 
callback_state=callback_state@entry=0x1461220, cycleid=<optimized out>)
    at nbtree.c:997
#8  0x000000000050cc2f in btbulkdelete (info=0x7ffef18deac0, stats=0x142fb70, 
callback=0x67e89b <vac_tid_reaped>, callback_state=0x1461220) at nbtree.c:801
#9  0x00000000004fc64b in index_bulk_delete (info=info@entry=0x7ffef18deac0, 
istat=istat@entry=0x0, callback=callback@entry=0x67e89b <vac_tid_reaped>, 
callback_state=callback_state@entry=0x1461220) at indexam.c:701
#10 0x000000000068108c in vac_bulkdel_one_index 
(ivinfo=ivinfo@entry=0x7ffef18deac0, istat=istat@entry=0x0, 
dead_items=0x1461220) at vacuum.c:2324
#11 0x00000000004f72ae in lazy_vacuum_one_index (indrel=<optimized out>, 
istat=0x0, reltuples=<optimized out>, vacrel=vacrel@entry=0x142f100) at 
vacuumlazy.c:2726
#12 0x00000000004f738b in lazy_vacuum_all_indexes 
(vacrel=vacrel@entry=0x142f100) at vacuumlazy.c:2328
#13 0x00000000004f75df in lazy_vacuum (vacrel=vacrel@entry=0x142f100) at 
vacuumlazy.c:2261
#14 0x00000000004f7f14 in lazy_scan_heap (vacrel=vacrel@entry=0x142f100) at 
vacuumlazy.c:1264
#15 0x00000000004f895f in heap_vacuum_rel (rel=0x7f4138a67c00, 
params=0x143cbec, bstrategy=0x143ea20) at vacuumlazy.c:534
#16 0x000000000067f62b in table_relation_vacuum (bstrategy=<optimized out>, 
params=0x143cbec, rel=0x7f4138a67c00) at 
../../../src/include/access/tableam.h:1680
#17 vacuum_rel (relid=1249, relation=<optimized out>, 
params=params@entry=0x143cbec) at vacuum.c:2086
#18 0x000000000068065c in vacuum (relations=0x144a118, 
params=params@entry=0x143cbec, bstrategy=<optimized out>, 
bstrategy@entry=0x143ea20, isTopLevel=isTopLevel@entry=true) at vacuum.c:475
#19 0x0000000000796a0e in autovacuum_do_vac_analyze (tab=tab@entry=0x143cbe8, 
bstrategy=bstrategy@entry=0x143ea20) at autovacuum.c:3149
#20 0x00000000007987bf in do_autovacuum () at autovacuum.c:2472
#21 0x0000000000798e72 in AutoVacWorkerMain (argc=argc@entry=0, 
argv=argv@entry=0x0) at autovacuum.c:1715
#22 0x0000000000798eed in StartAutoVacWorker () at autovacuum.c:1493
#23 0x000000000079fe49 in StartAutovacuumWorker () at postmaster.c:5534
#24 0x00000000007a0c44 in sigusr1_handler (postgres_signal_arg=<optimized out>) 
at postmaster.c:5239
#25 <signal handler called>
#26 0x00007f4137225783 in __select_nocancel () from /lib64/libc.so.6
#27 0x00000000007a0fc5 in ServerLoop () at postmaster.c:1770
#28 0x00000000007a2361 in PostmasterMain (argc=argc@entry=3, 
argv=argv@entry=0x136e9d0) at postmaster.c:1478
#29 0x00000000006ed9c4 in main (argc=3, argv=0x136e9d0) at main.c:202


#2  0x0000000000962c5c in ExceptionalCondition 
(conditionName=conditionName@entry=0xaa6a32 "false", 
errorType=errorType@entry=0x9bad97 "FailedAssertion", 
fileName=fileName@entry=0x9c6207 "heapam.c", 
    lineNumber=lineNumber@entry=7803) at assert.c:69
#3  0x00000000004d9db9 in index_delete_sort_cmp (deltid2=0x7ffef18dcc90, 
deltid1=<optimized out>) at heapam.c:7803
#4  index_delete_sort (delstate=delstate@entry=0x7ffef18ddf10) at heapam.c:7844
#5  0x00000000004e9323 in heap_index_delete_tuples (rel=0x7f4138a672b8, 
delstate=0x7ffef18ddf10) at heapam.c:7502
#6  0x000000000050a512 in table_index_delete_tuples (delstate=0x7ffef18ddf10, 
rel=0x0) at ../../../../src/include/access/tableam.h:1329
#7  _bt_delitems_delete_check (rel=rel@entry=0x7f41389dbea0, 
buf=buf@entry=9183, heapRel=heapRel@entry=0x7f4138a672b8, 
delstate=delstate@entry=0x7ffef18ddf10) at nbtpage.c:1540
#8  0x00000000004fff30 in _bt_simpledel_pass (rel=rel@entry=0x7f41389dbea0, 
buffer=buffer@entry=9183, heapRel=heapRel@entry=0x7f4138a672b8, 
deletable=deletable@entry=0x7ffef18ddfb0, ndeletable=4, newitem=<optimized 
out>, 
    minoff=2, maxoff=215) at nbtinsert.c:2899
#9  0x0000000000500171 in _bt_delete_or_dedup_one_page 
(rel=rel@entry=0x7f41389dbea0, heapRel=heapRel@entry=0x7f4138a672b8, 
insertstate=insertstate@entry=0x7ffef18de3c0, 
simpleonly=simpleonly@entry=false, 
    checkingunique=checkingunique@entry=true, uniquedup=uniquedup@entry=false, 
indexUnchanged=indexUnchanged@entry=false) at nbtinsert.c:2710
#10 0x00000000005051ad in _bt_findinsertloc (rel=rel@entry=0x7f41389dbea0, 
insertstate=insertstate@entry=0x7ffef18de3c0, 
checkingunique=checkingunique@entry=true, 
indexUnchanged=indexUnchanged@entry=false, 
    stack=stack@entry=0x157dbc8, heapRel=heapRel@entry=0x7f4138a672b8) at 
nbtinsert.c:902
#11 0x00000000005055ad in _bt_doinsert (rel=rel@entry=0x7f41389dbea0, 
itup=itup@entry=0x157dcc8, checkUnique=checkUnique@entry=UNIQUE_CHECK_YES, 
indexUnchanged=indexUnchanged@entry=false, heapRel=heapRel@entry=0x7f4138a672b8)
    at nbtinsert.c:256
#12 0x000000000050b16c in btinsert (rel=0x7f41389dbea0, values=<optimized out>, 
isnull=<optimized out>, ht_ctid=0x157d1bc, heapRel=0x7f4138a672b8, 
checkUnique=UNIQUE_CHECK_YES, indexUnchanged=false, indexInfo=0x1803df0)
    at nbtree.c:200
#13 0x00000000004fb95d in index_insert 
(indexRelation=indexRelation@entry=0x7f41389dbea0, 
values=values@entry=0x7ffef18de520, isnull=isnull@entry=0x7ffef18de500, 
heap_t_ctid=heap_t_ctid@entry=0x157d1bc, 
    heapRelation=heapRelation@entry=0x7f4138a672b8, 
checkUnique=UNIQUE_CHECK_YES, indexUnchanged=indexUnchanged@entry=false, 
indexInfo=indexInfo@entry=0x1803df0) at indexam.c:193
#14 0x0000000000581ae6 in CatalogIndexInsert 
(indstate=indstate@entry=0x157c2f8, heapTuple=heapTuple@entry=0x157d1b8) at 
indexing.c:158
#15 0x0000000000581b9f in CatalogTupleInsert 
(heapRel=heapRel@entry=0x7f4138a672b8, tup=tup@entry=0x157d1b8) at 
indexing.c:231
#16 0x000000000057996f in InsertPgClassTuple (pg_class_desc=0x7f4138a672b8, 
new_rel_desc=new_rel_desc@entry=0x7f41389d9e30, new_rel_oid=<optimized out>, 
relacl=relacl@entry=0, reloptions=reloptions@entry=0) at heap.c:939
#17 0x0000000000579a07 in AddNewRelationTuple 
(pg_class_desc=pg_class_desc@entry=0x7f4138a672b8, 
new_rel_desc=new_rel_desc@entry=0x7f41389d9e30, 
new_rel_oid=new_rel_oid@entry=500038, new_type_oid=new_type_oid@entry=0, 
    reloftype=reloftype@entry=0, relowner=relowner@entry=16556, 
relkind=relkind@entry=116 't', relfrozenxid=17414307, relminmxid=730642, 
relacl=relacl@entry=0, reloptions=reloptions@entry=0) at heap.c:998
#18 0x000000000057a204 in heap_create_with_catalog 
(relname=relname@entry=0x7ffef18dea90 "pg_toast_500035", 
relnamespace=relnamespace@entry=20138, reltablespace=<optimized out>, 
relid=500038, relid@entry=0, 
    reltypeid=reltypeid@entry=0, reloftypeid=reloftypeid@entry=0, 
ownerid=16556, accessmtd=2, tupdesc=tupdesc@entry=0x1800420, 
cooked_constraints=cooked_constraints@entry=0x0, relkind=relkind@entry=116 't', 
    relpersistence=relpersistence@entry=116 't', 
shared_relation=shared_relation@entry=false, 
mapped_relation=mapped_relation@entry=false, 
oncommit=oncommit@entry=ONCOMMIT_NOOP, reloptions=reloptions@entry=0, 
    use_user_acl=use_user_acl@entry=false, 
allow_system_table_mods=allow_system_table_mods@entry=true, 
is_internal=is_internal@entry=true, relrewrite=relrewrite@entry=0, 
typaddress=typaddress@entry=0x0) at heap.c:1386
#19 0x00000000005a41e2 in create_toast_table (rel=rel@entry=0x7f41389ddfb8, 
toastOid=toastOid@entry=0, toastIndexOid=toastIndexOid@entry=0, 
reloptions=reloptions@entry=0, lockmode=lockmode@entry=8, 
check=check@entry=false, 
    OIDOldToast=OIDOldToast@entry=0) at toasting.c:249
#20 0x00000000005a4571 in CheckAndCreateToastTable (relOid=relOid@entry=500035, 
reloptions=reloptions@entry=0, lockmode=lockmode@entry=8, 
check=check@entry=false, OIDOldToast=OIDOldToast@entry=0) at toasting.c:88
#21 0x00000000005a45d3 in NewRelationCreateToastTable 
(relOid=relOid@entry=500035, reloptions=reloptions@entry=0) at toasting.c:75
#22 0x0000000000609e47 in create_ctas_internal 
(attrList=attrList@entry=0x17ff798, into=into@entry=0x1374c80) at createas.c:135
#23 0x000000000060a0cf in intorel_startup (self=0x1547678, operation=<optimized 
out>, typeinfo=0x17fc530) at createas.c:528
#24 0x0000000000694b1e in standard_ExecutorRun 
(queryDesc=queryDesc@entry=0x1569188, 
direction=direction@entry=ForwardScanDirection, count=count@entry=0, 
execute_once=execute_once@entry=true) at execMain.c:352
#25 0x00007f41307d2a2e in pgss_ExecutorRun (queryDesc=0x1569188, 
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at 
pg_stat_statements.c:1010
#26 0x00007f41303af648 in explain_ExecutorRun (queryDesc=0x1569188, 
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at 
auto_explain.c:320
#27 0x0000000000694c13 in ExecutorRun (queryDesc=queryDesc@entry=0x1569188, 
direction=direction@entry=ForwardScanDirection, count=count@entry=0, 
execute_once=execute_once@entry=true) at execMain.c:305
#28 0x000000000060a894 in ExecCreateTableAs (pstate=pstate@entry=0x14bd950, 
stmt=stmt@entry=0x1545140, params=params@entry=0x0, 
queryEnv=queryEnv@entry=0x0, qc=qc@entry=0x7ffef18df720) at createas.c:336
#29 0x00000000008378dc in ProcessUtilitySlow (pstate=pstate@entry=0x14bd950, 
pstmt=pstmt@entry=0x15ce250, 
    queryString=queryString@entry=0x1373df0 "\n-- do paging 
substitutions\nCREATE TEMPORARY TABLE SU AS\n\tSELECT ...


Reply via email to