Re: Curious buildfarm failures (fwd)

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: Curious buildfarm failures (fwd)
Дата
Msg-id 20130116013451.GF3089@awork2.anarazel.de
обсуждение исходный текст
Ответ на Re: Curious buildfarm failures (fwd)  (Andres Freund <andres@2ndquadrant.com>)
Ответы Re: Curious buildfarm failures (fwd)  (Andres Freund <andres@2ndquadrant.com>)
Список pgsql-hackers
On 2013-01-16 02:13:26 +0100, Andres Freund wrote:
> On 2013-01-15 19:56:52 -0500, Tom Lane wrote:
> > Andres Freund <andres@2ndquadrant.com> writes:
> > > FWIW its also triggerable if two other function calls are places inside
> > > the above if() (I tried fprintf(stderr, "argh") and kill(0, 0)).
> >
> > [ confused... ]  You mean replacing the abort() in the elog macro with
> > one of these functions?  Or something else?
>
> I mean replacing the elog(ERROR, "ForwardFsyncRequest must...") with any
> two function calls inside a do/while(0). I just tried to place some
> random functions there instead of the elog to make sure its unrelated,
> and it still triggers the problem even before the elog commit. The
> assembler output of that function changes wildly with tiny changes and I
> don't understand IA-64 at all (does anybody?), so I don't see anything
> we can do there.
>
> > > It seems the change just made an existing issue visible.
> > > No idea what to do about it.
> >
> > Pretty clearly a compiler bug at this point.  Since there doesn't seem
> > to be a clean workaround (no, I don't want to expand the struct
> > assignment manually), and anyway we can't be sure that the bug doesn't
> > also manifest in other places, recommending Sergey update his compiler
> > seems like the thing to do.
>
> Yea. Don't have a better suggestion.
>
> > At this point I'm more interested in his report in
> > <alpine.LRH.2.03.1301152012220.773@ast.cam.ac.uk> about
> > the Assert at spgdoinsert.c:1222 failing.  That's pretty new code, so
> > more likely to have a genuine bug, and I wonder if it's related to
> > the spgist issue in <50EBF992.2000704@qunar.com> ...
>
> Yes, it looks more like it could be something real. There are
> suspicously many other failing tests though (misc, with) that don't seem
> to be related to the spgist crash.

#3  0x4000000000b5c710 in ExceptionalCondition (   conditionName=0x4000000000c76d50 "!(( ((void) ((bool) ((!
assert_enabled)|| ! (!(((bool) (((const void*)(&nodes[n]->t_tid) != ((void *)0)) && ((&nodes[n]->t_tid)->ip_posid !=
0)))))|| (ExceptionalCondition(\"!(((bool) (((const void*)"...,    errorType=0x4000000000c4c5a0 "FailedAssertion",
fileName=0x4000000000c75d30"spgdoinsert.c", lineNumber=1222) at assert.c:54 
#4  0x40000000001a6320 in doPickSplit (index=0x600000000007ff48, state=0x3, current=0x60000ffffff7a700, parent=0x4,
newLeafTuple=0x6,   level=512360, isNulls=64 '@', isNew=12 '\f') at spgdoinsert.c:1222 
#5  0x40000000001a12d0 in spgdoinsert (index=0x2000000009856028, state=0x60000ffffff7a9d0, heapPtr=0x60000000001e6e7c,
 datum=6917546619826579712, isnull=0 '\0') at spgdoinsert.c:1996 
#6  0x4000000000195870 in spginsert (fcinfo=0x60000ffffff7a9d0) at spginsert.c:222
#7  0x4000000000b77dd0 in FunctionCall6Coll (flinfo=0x6000000000102018, collation=0, arg1=2305843009373429800,
arg2=6917546619826580944,   arg3=6917546619826581200, arg4=6917529027643076220, arg5=2305843009373166576, arg6=0) at
fmgr.c:1439
#8  0x4000000000148b70 in index_insert (indexRelation=0x2000000009856028, values=0x60000ffffff7add0,
isnull=0x60000ffffff7aed0"",    heap_t_ctid=0x60000000001e6e7c, heapRelation=0x2000000009815bf0,
checkUnique=UNIQUE_CHECK_NO)at indexam.c:216 
#9  0x40000000004e99f0 in ExecInsertIndexTuples (slot=0x60000000001e55c0, tupleid=0x60000000001e6e7c,
estate=0x60000000001e4f18)  at execUtils.c:1088 
#10 0x4000000000516710 in ExecModifyTable (node=0x0) at nodeModifyTable.c:249
#11 0x40000000004c6350 in $$1$3_0$TAG$0ca$0$3 () at execProcnode.c:377
#12 0x40000000004bba00 in ExecutorRun (queryDesc=0x60000000001e4fb0, direction=NoMovementScanDirection, count=0) at
execMain.c:1400
#13 0x40000000008493f0 in PortalRunMulti (portal=0x60000000000ff7f8, isTopLevel=-26 '�', dest=0x60000000001ef658,
altdest=0x60000000001ef658,completionTag=0x60000ffffff7b2d0 "") at pquery.c:185 
#14 0x4000000000848d20 in _setjmp_lpad_PortalRun_1$0$13 () at pquery.c:814
#15 0x4000000000840c60 in exec_simple_query (   query_string=0x600000000018d4f8 "insert into test_range_spgist select
'empty'::int4rangefrom generate_series(1,500) g;")   at postgres.c:1048 
#16 0x40000000008370a0 in _setjmp_lpad_PostgresMain_0$0$51 () at postgres.c:3969
---Type <return> to continue, or q <return> to quit---
#17 0x4000000000720240 in BackendStartup (port=0x60000000000fc950) at postmaster.c:3989
#18 0x400000000071dc80 in ServerLoop () at postmaster.c:1575
#19 0x400000000071a700 in PostmasterMain (argc=9, argv=0x60000000000dc300) at postmaster.c:1244
#20 0x40000000005796d0 in main (argc=9, argv=0x60000000000dc010) at main.c:197


#4  0x40000000001a6320 in doPickSplit (index=0x600000000007ff48, state=0x3, current=0x60000ffffff7a700, parent=0x4,
newLeafTuple=0x6,   level=512360, isNulls=64 '@', isNew=12 '\f') at spgdoinsert.c:1222 
1222                Assert(ItemPointerGetBlockNumber(&nodes[n]->t_tid) == leafBlock);

(gdb) info locals
in = {nTuples = 227, datums = 0x6000000000205060, level = 1}
out = {hasPrefix = 0 '\0', prefixDatum = 0, nNodes = 8, nodeLabels = 0x0, mapTuplesToNodes = 0x6000000000209018,
leafTupleDatums= 0x6000000000209430} 
includeNew = 1 '\001'
startOffsets = {4, 0}
rdata = {{data = 0x60000ffffff7a860 "\177\006", len = 56, buffer = 0, buffer_std = 1 '\001', next =
0x60000ffffff7a720},{   data = 0x6000000000206f08 "D", len = 72, buffer = 0, buffer_std = 1 '\001', next =
0x60000ffffff7a740},{data = 0x6000000000206090 "3",    len = 456, buffer = 0, buffer_std = 1 '\001', next =
0x60000ffffff7a760},{data = 0x0, len = 0, buffer = 395, buffer_std = 1 '\001',    next = 0x0}, {data = 0x2dffe98
<Address0x2dffe98 out of bounds>, len = 0, buffer = 0, buffer_std = 88 'X', next = 0xa020}, {   data =
0x60000000001a6f80"A", len = 32, buffer = 16842752, buffer_std = 2 '\002', next = 0x60000ffffff7a7f0}, {   data =
0xffffffff00000100<Address 0xffffffff00000100 out of bounds>, len = 65598, buffer = 0, buffer_std = -119 '\211', next =
0x164}, {data = 0x60000ffffff7a7f0 "p\200�\002", len = 0, buffer = 0, buffer_std = 112 'p', next = 0x30}, {   data =
0x1<Address 0x1 out of bounds>, len = 4294420496, buffer = 1610616831, buffer_std = -128 '\200', next = 0x20}, {   data
=0x1 <Address 0x1 out of bounds>, len = 4294420576, buffer = 1610616831, buffer_std = 0 '\0', next = 0x68}} 
xlrec = {node = {spcNode = 1663, dbNode = 12030, relNode = 40992}, blknoSrc = 32, blknoDest = 4294967295, nDelete =
226,nInsert = 0,  initSrc = 0 '\0', initDest = 1 '\001', blknoInner = 1610616831, offnumInner = 20520, initInner = 0
'\0',storesNulls = 0 '\0',  blknoParent = 1610612736, offnumParent = 32, nodeI = 0, stateSrc = {myXid = 1516, isBuild =
0'\0'}} 
saveCurrent = {blkno = 395, buffer = 0, page = 0x0, offnum = 43104, node = 1610616831}

(gdb) p parent
$5 = (SPPageDesc *) 0x4

#5  0x40000000001a12d0 in spgdoinsert (index=0x2000000009856028, state=0x60000ffffff7a9d0, heapPtr=0x60000000001e6e7c,
 datum=6917546619826579712, isnull=0 '\0') at spgdoinsert.c:1996 
1996                                                    if (doPickSplit(index, state, ¤t, &parent,
(gdb) p parent
$4 = {blkno = 1, buffer = 356, page = 0x200000000148eea0 "", offnum = 1, node = 4}

(gdb) p &parent
$7 = (SPPageDesc *) 0x60000ffffff7a900

Looks like some out of bounds access?

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Curious buildfarm failures (fwd)
Следующее
От: Jeff Janes
Дата:
Сообщение: string escaping in tutorial/syscat.source