Re: GiST: Bad newtup On Exit From gistSplit() ? - Mailing list pgsql-hackers

From Itai Zukerman
Subject Re: GiST: Bad newtup On Exit From gistSplit() ?
Date
Msg-id 877kbhh8g5.fsf@matt.w80.math-hat.com
Whole thread Raw
In response to Re: GiST: Bad newtup On Exit From gistSplit() ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: GiST: Bad newtup On Exit From gistSplit() ?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
>> I'm still not having any luck tracking down my SEGV.  If anyone is
>> interested in debugging or even just reproducing this, I'd be happy to
>> post or E-mail you my code.  It looks like shortly after calling
>> gistSplit() there's maybe a double-free() somewhere?
>
> It might help to build with --enable-cassert, if you didn't already.

After recompiling with --enable-cassert, nserting into an empty table,
I get:
 TRAP: FailedAssertion("!((VfdCache[0].fd == (-1)))", File: "fd.c", Line: 1113)
 Program received signal SIGABRT, Aborted. 0x400eda51 in kill () from /lib/libc.so.6 (gdb) bt #0  0x400eda51 in kill ()
from/lib/libc.so.6 #1  0x400ed872 in raise () from /lib/libc.so.6 #2  0x400ee986 in abort () from /lib/libc.so.6 #3
0x081dc4d7in ExceptionalCondition (conditionName=0x8262d92 "!((VfdCache[0].fd == (-1)))", errorType=0x8262a13
"FailedAssertion",fileName=0x8262a0e "fd.c",      lineNumber=1113) at assert.c:46 #4  0x0816a085 in AtEOXact_Files ()
atfd.c:1113 #5  0x080a1921 in CommitTransaction () at xact.c:1031 #6  0x080a1c85 in CommitTransactionCommand
(forceCommit=0'\0') at xact.c:1304 #7  0x08177aaa in finish_xact_command (forceCommit=0 '\0') at postgres.c:978 #8
0x08177933in pg_exec_query_string (query_string=0x8314054, dest=Debug, parse_context=0x82ddb18) at postgres.c:897 #9
0x08178ba7in PostgresMain (argc=4, argv=0x82c5e00, username=0x82c6400 "postgres") at postgres.c:2013 #10 0x081233b9 in
main(argc=4, argv=0xbffffc14) at main.c:235
 

But if I restart postgres and start with some data in the table, I
get, as before:
 Program received signal SIGSEGV, Segmentation fault. 0x401312ff in mallopt () from /lib/libc.so.6 (gdb) bt #0
0x401312ffin mallopt () from /lib/libc.so.6 #1  0x401302ca in free () from /lib/libc.so.6 #2  0x081ea205 in
AllocSetDelete(context=0x82efffc) at aset.c:460 #3  0x081eb107 in MemoryContextDelete (context=0x82efffc) at mcxt.c:188
#4 0x081eb172 in MemoryContextDeleteChildren (context=0x82eff70) at mcxt.c:207 #5  0x081eb093 in MemoryContextDelete
(context=0x82eff70)at mcxt.c:161 #6  0x080a1587 in AtCommit_Memory () at xact.c:685 #7  0x080a192b in CommitTransaction
()at xact.c:1033 #8  0x080a1c85 in CommitTransactionCommand (forceCommit=0 '\0') at xact.c:1304 #9  0x08177aaa in
finish_xact_command(forceCommit=0 '\0') at postgres.c:978 #10 0x08177933 in pg_exec_query_string
(query_string=0x8313fcc,dest=Debug, parse_context=0x82efee4) at postgres.c:897 #11 0x08178ba7 in PostgresMain (argc=4,
argv=0x82c5e00,username=0x82c6400 "postgres") at postgres.c:2013 #12 0x081233b9 in main (argc=4, argv=0xbffffc14) at
main.c:235

Since this only happens after a call to gistSplit(), I still suspect
GiST.  But I've been going over the GiST code the past 3 days and I
still can't find anything substantially wrong.

-- 
Itai Zukerman  <http://www.math-hat.com/~zukerman/>


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: CLUSTER loses nulls (was Re: [ADMIN] Still a bug in the VACUUM)
Next
From: Tom Lane
Date:
Subject: Re: GiST: Bad newtup On Exit From gistSplit() ?