Re: [HACKERS] Red-Black tree traversal tests - Mailing list pgsql-hackers

From Thomas Munro
Subject Re: [HACKERS] Red-Black tree traversal tests
Date
Msg-id CAEepm=0BJGpdYN82dze-iGHf4FFWrK9M5kD0uin0Z2kXdw=_UA@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] Red-Black tree traversal tests  (Victor Drobny <v.drobny@postgrespro.ru>)
Responses Re: [HACKERS] Red-Black tree traversal tests
List pgsql-hackers
On Fri, Sep 8, 2017 at 9:03 PM, Victor Drobny <v.drobny@postgrespro.ru> wrote:
> Thank you very much for your review. In the attachment you can find v2 of
> the patch.

FYI this version crashes for me:

test test_rbtree              ... FAILED (test process exited with exit code 2)

It's trying to call rb->combiner which is null.

(lldb) bt
* thread #1: tid = 0x0000, 0x0000000000000000, stop reason = signal SIGSTOP   frame #0: 0x0000000000000000 * frame #1:
0x000000010c6fd9e0
postgres`rb_insert(rb=0x00007fe7e2029850, data=0x00007fff5380aa10,
isNew="") + 128 at rbtree.c:419   frame #2: 0x000000010cffbfb9
test_rbtree.so`testdelete(size=100000, delsize=10000) + 425 at
test.c:558   frame #3: 0x000000010cffb298
test_rbtree.so`testrbtree(fcinfo=0x00007fe7e200d9a8) + 104 at
test.c:630   frame #4: 0x000000010c6a03be
postgres`ExecInterpExpr(state=0x00007fe7e200d8c0,
econtext=0x00007fe7e200d570, isnull="") + 2702 at execExprInterp.c:672   frame #5: 0x000000010c6e005b
postgres`ExecEvalExprSwitchContext(state=0x00007fe7e200d8c0,
econtext=0x00007fe7e200d570, isNull="") + 59 at executor.h:309   frame #6: 0x000000010c6dffee
postgres`ExecProject(projInfo=0x00007fe7e200d8b8) + 78 at
executor.h:343   frame #7: 0x000000010c6dfd5c
postgres`ExecResult(pstate=0x00007fe7e200d458) + 332 at
nodeResult.c:136   frame #8: 0x000000010c6b2912
postgres`ExecProcNodeFirst(node=0x00007fe7e200d458) + 82 at
execProcnode.c:430   frame #9: 0x000000010c6af352
postgres`ExecProcNode(node=0x00007fe7e200d458) + 50 at executor.h:251   frame #10: 0x000000010c6ab0f6
postgres`ExecutePlan(estate=0x00007fe7e200d240,
planstate=0x00007fe7e200d458, use_parallel_mode='\0',
operation=CMD_SELECT, sendTuples='\x01', numberTuples=0,
direction=ForwardScanDirection, dest=0x00007fe7e200aa20,
execute_once='\x01') + 182 at execMain.c:1720   frame #11: 0x000000010c6aafcb
postgres`standard_ExecutorRun(queryDesc=0x00007fe7e2004040,
direction=ForwardScanDirection, count=0, execute_once='\x01') + 571 at
execMain.c:363   frame #12: 0x000000010c6aad87
postgres`ExecutorRun(queryDesc=0x00007fe7e2004040,
direction=ForwardScanDirection, count=0, execute_once='\x01') + 87 at
execMain.c:306   frame #13: 0x000000010c8b5bf2
postgres`PortalRunSelect(portal=0x00007fe7e2000040, forward='\x01',
count=0, dest=0x00007fe7e200aa20) + 306 at pquery.c:932   frame #14: 0x000000010c8b55ba
postgres`PortalRun(portal=0x00007fe7e2000040,
count=9223372036854775807, isTopLevel='\x01', run_once='\x01',
dest=0x00007fe7e200aa20, altdest=0x00007fe7e200aa20, completionTag="")
+ 762 at pquery.c:773   frame #15: 0x000000010c8b0f24
postgres`exec_simple_query(query_string="SELECT testrbtree(100000);")
+ 1316 at postgres.c:1109   frame #16: 0x000000010c8b0127 postgres`PostgresMain(argc=1,
argv=0x00007fe7e180bd10, dbname="contrib_regression",
username="munro") + 2375 at postgres.c:4103   frame #17: 0x000000010c7f712e
postgres`BackendRun(port=0x00007fe7e0d00db0) + 654 at
postmaster.c:4357   frame #18: 0x000000010c7f64b3
postgres`BackendStartup(port=0x00007fe7e0d00db0) + 483 at
postmaster.c:4029   frame #19: 0x000000010c7f54a5 postgres`ServerLoop + 597 at postmaster.c:1753   frame #20:
0x000000010c7f2c91postgres`PostmasterMain(argc=8,
 
argv=0x00007fe7e0c03860) + 5553 at postmaster.c:1361   frame #21: 0x000000010c716799 postgres`main(argc=8,
argv=0x00007fe7e0c03860) + 761 at main.c:228   frame #22: 0x00007fff8333a5ad libdyld.dylib`start + 1
(lldb) f 1
frame #1: 0x000000010c6fd9e0 postgres`rb_insert(rb=0x00007fe7e2029850,
data=0x00007fff5380aa10, isNew="") + 128 at rbtree.c:419  416 /*  417 * Found node with given key.  Apply combiner.
418*/
 
-> 419 rb->combiner(current, data, rb->arg);  420 *isNew = false;  421 return current;  422 }
(lldb) print *rb
(RBTree) $2 = { root = 0x00007fe7e4419b60 node_size = 40 comparator = 0x000000010cffc310 (test_rbtree.so`cmp at
int_rbtree.h:28)combiner = 0x0000000000000000 allocfunc = 0x000000010cffc340 (test_rbtree.so`alloc at int_rbtree.h:37)
freefunc= 0x000000010cffc370 (test_rbtree.so`fr at int_rbtree.h:45) arg = 0x0000000000000000
 
}

-- 
Thomas Munro
http://www.enterprisedb.com


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

pgsql-hackers by date:

Previous
From: Jeevan Chalke
Date:
Subject: Re: [HACKERS] Partition-wise aggregation/grouping
Next
From: Antonin Houska
Date:
Subject: Re: [HACKERS] WIP: Aggregation push-down