[sqlsmith] Failed assertion in _hash_splitbucket_guts

From: Andreas Seltenreich <seltenreich(at)gmx(dot)de>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Robert Haas <rhaas(at)postgresql(dot)org>
Subject: [sqlsmith] Failed assertion in _hash_splitbucket_guts
Date: 2016-12-02 20:36:24
Message-ID: 877f7i2hmf.fsf@credativ.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

the new hash index code on 11003eb failed an assertion yesterday:

TRAP: FailedAssertion("!(bucket == obucket)", File: "hashpage.c", Line: 1037)

Statement was

update public.hash_i4_heap set seqno = public.hash_i4_heap.random;

It can be reproduced with the data directory (Debian stretch amd64) I've
put here:

http://ansel.ydns.eu/~andreas/_hash_splitbucket_guts.tar.xz (12 MB)

Backtrace below. The cluster hasn't suffered any crashes before this
incident.

regards,
Andreas

Core was generated by `postgres: smith regression [local] UPDATE '.
Program terminated with signal SIGABRT, Aborted.
(gdb) bt
#0 0x00007f49c40cc198 in __GI_raise (sig=sig(at)entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007f49c40cd61a in __GI_abort () at abort.c:89
#2 0x00000000007f55c1 in ExceptionalCondition (conditionName=conditionName(at)entry=0x84f890 "!(bucket == obucket)", errorType=errorType(at)entry=0x83665d "FailedAssertion", fileName=fileName(at)entry=0x84f86a "hashpage.c", lineNumber=lineNumber(at)entry=1037) at assert.c:54
#3 0x00000000004a3d41 in _hash_splitbucket_guts (rel=rel(at)entry=0x1251ff8, metabuf=metabuf(at)entry=1703, obucket=obucket(at)entry=37, nbucket=nbucket(at)entry=549, obuf=obuf(at)entry=3082, nbuf=nbuf(at)entry=1754, htab=0x0, maxbucket=549, highmask=1023, lowmask=511) at hashpage.c:1037
#4 0x00000000004a5627 in _hash_splitbucket (lowmask=511, highmask=1023, maxbucket=549, nbuf=1754, obuf=3082, nbucket=549, obucket=37, metabuf=1703, rel=0x1251ff8) at hashpage.c:894
#5 _hash_expandtable (rel=0x1251ff8, metabuf=1703) at hashpage.c:768
#6 0x00000000004a1f71 in _hash_doinsert (rel=rel(at)entry=0x1251ff8, itup=itup(at)entry=0x26dc830) at hashinsert.c:236
#7 0x00000000004a01c3 in hashinsert (rel=0x1251ff8, values=<optimized out>, isnull=<optimized out>, ht_ctid=0x26dc6fc, heapRel=<optimized out>, checkUnique=<optimized out>) at hash.c:247
#8 0x00000000005ded1b in ExecInsertIndexTuples (slot=slot(at)entry=0x26dbd10, tupleid=tupleid(at)entry=0x26dc6fc, estate=estate(at)entry=0x2530028, noDupErr=noDupErr(at)entry=0 '\000', specConflict=specConflict(at)entry=0x0, arbiterIndexes=arbiterIndexes(at)entry=0x0) at execIndexing.c:388
#9 0x00000000005fddaa in ExecUpdate (tupleid=tupleid(at)entry=0x7ffcaa7c9e40, oldtuple=oldtuple(at)entry=0x0, slot=slot(at)entry=0x26dbd10, planSlot=planSlot(at)entry=0x26db278, epqstate=epqstate(at)entry=0x26dac98, estate=estate(at)entry=0x2530028, canSetTag=1 '\001') at nodeModifyTable.c:1030
#10 0x00000000005fe49c in ExecModifyTable (node=node(at)entry=0x26dabf0) at nodeModifyTable.c:1516
#11 0x00000000005e3a18 in ExecProcNode (node=node(at)entry=0x26dabf0) at execProcnode.c:396
#12 0x00000000005dfabe in ExecutePlan (dest=0x1c2ecd0, direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>, operation=CMD_UPDATE, use_parallel_mode=<optimized out>, planstate=0x26dabf0, estate=0x2530028) at execMain.c:1567
#13 standard_ExecutorRun (queryDesc=0x1c2ed68, direction=<optimized out>, count=0) at execMain.c:338
#14 0x0000000000701b94 in ProcessQuery (plan=<optimized out>, sourceText=0xfff228 "update public.hash_i4_heap set \n seqno = public.hash_i4_heap.random\nreturning \n (select option_value from information_schema.foreign_server_options limit 1 offset 2)\n as c0", params=0x0, dest=0x1c2ecd0, completionTag=0x7ffcaa7ca020 "") at pquery.c:185
#15 0x0000000000701e0b in PortalRunMulti (portal=portal(at)entry=0x25c52b0, isTopLevel=isTopLevel(at)entry=1 '\001', setHoldSnapshot=setHoldSnapshot(at)entry=1 '\001', dest=dest(at)entry=0x1c2ecd0, altdest=0xca30e0 <donothingDR>, completionTag=completionTag(at)entry=0x7ffcaa7ca020 "") at pquery.c:1299
#16 0x00000000007020f9 in FillPortalStore (portal=portal(at)entry=0x25c52b0, isTopLevel=isTopLevel(at)entry=1 '\001') at pquery.c:1045
#17 0x0000000000702bcd in PortalRun (portal=portal(at)entry=0x25c52b0, count=count(at)entry=9223372036854775807, isTopLevel=isTopLevel(at)entry=1 '\001', dest=dest(at)entry=0x199f248, altdest=altdest(at)entry=0x199f248, completionTag=completionTag(at)entry=0x7ffcaa7ca3d0 "") at pquery.c:782
#18 0x0000000000700379 in exec_simple_query (query_string=0xfff228 "update public.hash_i4_heap set \n seqno = public.hash_i4_heap.random\nreturning \n (select option_value from information_schema.foreign_server_options limit 1 offset 2)\n as c0") at postgres.c:1094
#19 PostgresMain (argc=<optimized out>, argv=argv(at)entry=0xfad1d8, dbname=<optimized out>, username=<optimized out>) at postgres.c:4069
#20 0x000000000046d6c9 in BackendRun (port=0xfa8c60) at postmaster.c:4271
#21 BackendStartup (port=0xfa8c60) at postmaster.c:3945
#22 ServerLoop () at postmaster.c:1701
#23 0x0000000000698ab9 in PostmasterMain (argc=argc(at)entry=4, argv=argv(at)entry=0xf765d0) at postmaster.c:1309
#24 0x000000000046e88d in main (argc=4, argv=0xf765d0) at main.c:228

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2016-12-02 20:46:47 Re: Dynamic shared memory areas
Previous Message Jim Nasby 2016-12-02 20:30:39 HaveNFreeProcs() iterates through entire freeProcs list