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() ?
|
| 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: