Closed
Description
Hi all, I am encountering segfaults with your plugin in our production environment. We were able to reproduce it on a development machine. The repro case involves updating randomly rows in a table and while doing rum queries on that table.
Please let us know how we can fix it. I will be more than happy to open up a PR with a fix, but I need some guidance from you. Please let me know if there's any other information I can provide to help debug the issue
Environment
alexandrt@alexandrt-HP-OMEN:~$ uname -a
Linux alexandrt-HP-OMEN 4.18.0-21-generic #22~18.04.1-Ubuntu SMP Thu May 16 15:07:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
alexandrt@alexandrt-HP-OMEN:~$ psql --version
psql (PostgreSQL) 10.8 (Ubuntu 10.8-0ubuntu0.18.04.1)
select * from pg_extension;
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-----------+----------+--------------+----------------+------------+-----------+--------------
plpgsql | 10 | 11 | f | 1.0 | |
btree_gin | 16384 | 2200 | t | 1.2 | |
pg_trgm | 16384 | 2200 | t | 1.3 | |
rum | 16384 | 2200 | t | 1.2 | |
(4 rows)
gdb backtrace:
gdb) bt
#0 decode_varbyte (ptr=ptr@entry=0x7ffe32bab1f8) at src/rumtsquery.c:228
#1 0x00007fe9b5e93a28 in ruminv_tsvector_consistent (fcinfo=<optimized out>) at src/rumtsquery.c:540
#2 0x00007fe9b5ea2ff8 in FunctionCall10Coll (flinfo=<optimized out>, collation=<optimized out>, arg1=<optimized out>, arg2=<optimized out>, arg3=<optimized out>, arg4=<optimized out>,
arg5=0, arg6=94294333292185, arg7=94294333291792, arg8=94294333291872, arg9=94294333292416, arg10=94294333292496) at src/rumutil.c:986
#3 0x00007fe9b5e9a24b in callConsistentFn (rumstate=rumstate@entry=0x55c29c78bbf8, key=key@entry=0x55c29c3d7e08) at src/rumget.c:165
#4 0x00007fe9b5e9dca2 in keyGetItem (key=0x55c29c3d7e08, tempCtx=0x55c29c37d8e8, rumstate=<optimized out>) at src/rumget.c:1408
#5 scanGetItemRegular (scan=0x55c29c3d7e08, scan=0x55c29c3d7e08, recheck=0x7ffe32bac33f "", item=0x7ffe32bac340, advancePast=0x55c29c78bbe8) at src/rumget.c:1487
#6 scanGetItem (scan=scan@entry=0x55c29c78b3d8, advancePast=advancePast@entry=0x7ffe32bac340, item=item@entry=0x7ffe32bac340, recheck=recheck@entry=0x7ffe32bac33f "") at src/rumget.c:2084
#7 0x00007fe9b5e9e501 in rumgetbitmap (scan=0x55c29c78b3d8, tbm=0x55c29c80cce0) at src/rumget.c:2122
#8 0x000055c29a8a3c92 in index_getbitmap (scan=scan@entry=0x55c29c78b3d8, bitmap=bitmap@entry=0x55c29c80cce0) at ./build/../src/backend/access/index/indexam.c:726
#9 0x000055c29a9f5b56 in MultiExecBitmapIndexScan (node=0x55c29c78b1e8) at ./build/../src/backend/executor/nodeBitmapIndexscan.c:104
#10 0x000055c29a9e853e in MultiExecProcNode (node=<optimized out>) at ./build/../src/backend/executor/execProcnode.c:490
#11 0x000055c29a9f52b9 in BitmapHeapNext (node=node@entry=0x55c29c785ee8) at ./build/../src/backend/executor/nodeBitmapHeapscan.c:117
#12 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29a9f47d0 <BitmapHeapRecheck>, accessMtd=0x55c29a9f4860 <BitmapHeapNext>, node=0x55c29c785ee8)
at ./build/../src/backend/executor/execScan.c:97
#13 ExecScan (node=0x55c29c785ee8, accessMtd=0x55c29a9f4860 <BitmapHeapNext>, recheckMtd=0x55c29a9f47d0 <BitmapHeapRecheck>) at ./build/../src/backend/executor/execScan.c:164
#14 0x000055c29aa065e5 in ExecProcNode (node=0x55c29c785ee8) at ./build/../src/include/executor/executor.h:250
#15 CteScanNext (node=0x55c29c78b5c8) at ./build/../src/backend/executor/nodeCtescan.c:103
#16 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa064b0 <CteScanRecheck>, accessMtd=0x55c29aa064e0 <CteScanNext>, node=0x55c29c78b5c8)
at ./build/../src/backend/executor/execScan.c:97
#17 ExecScan (node=0x55c29c78b5c8, accessMtd=0x55c29aa064e0 <CteScanNext>, recheckMtd=0x55c29aa064b0 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:164
#18 0x000055c29aa065e5 in ExecProcNode (node=0x55c29c78b5c8) at ./build/../src/include/executor/executor.h:250
#19 CteScanNext (node=0x55c29c797118) at ./build/../src/backend/executor/nodeCtescan.c:103
#20 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa064b0 <CteScanRecheck>, accessMtd=0x55c29aa064e0 <CteScanNext>, node=0x55c29c797118)
at ./build/../src/backend/executor/execScan.c:97
#21 ExecScan (node=0x55c29c797118, accessMtd=0x55c29aa064e0 <CteScanNext>, recheckMtd=0x55c29aa064b0 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:164
#22 0x000055c29aa065e5 in ExecProcNode (node=0x55c29c797118) at ./build/../src/include/executor/executor.h:250
#23 CteScanNext (node=0x55c29c7a5738) at ./build/../src/backend/executor/nodeCtescan.c:103
#24 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa064b0 <CteScanRecheck>, accessMtd=0x55c29aa064e0 <CteScanNext>, node=0x55c29c7a5738)
at ./build/../src/backend/executor/execScan.c:97
#25 ExecScan (node=0x55c29c7a5738, accessMtd=0x55c29aa064e0 <CteScanNext>, recheckMtd=0x55c29aa064b0 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:164
#26 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa08c20 <SubqueryRecheck>, accessMtd=0x55c29aa08c50 <SubqueryNext>, node=0x55c29c7a5418)
at ./build/../src/backend/executor/execScan.c:97
#27 ExecScan (node=0x55c29c7a5418, accessMtd=0x55c29aa08c50 <SubqueryNext>, recheckMtd=0x55c29aa08c20 <SubqueryRecheck>) at ./build/../src/backend/executor/execScan.c:164
#28 0x000055c29a9ef3ca in ExecProcNode (node=0x55c29c7a5418) at ./build/../src/include/executor/executor.h:250
#29 ExecAppend (pstate=0x55c29c7a5238) at ./build/../src/backend/executor/nodeAppend.c:222
#30 0x000055c29aa05787 in ExecProcNode (node=0x55c29c7a5238) at ./build/../src/include/executor/executor.h:250
#31 setop_fill_hash_table (setopstate=0x55c29c7a5078) at ./build/../src/backend/executor/nodeSetOp.c:365
#32 ExecSetOp (pstate=0x55c29c7a5078) at ./build/../src/backend/executor/nodeSetOp.c:210
#33 0x000055c29aa0445d in ExecProcNode (node=0x55c29c7a5078) at ./build/../src/include/executor/executor.h:250
#34 ExecResult (pstate=0x55c29c7a4e08) at ./build/../src/backend/executor/nodeResult.c:115
#35 0x000055c29a9ef3ca in ExecProcNode (node=0x55c29c7a4e08) at ./build/../src/include/executor/executor.h:250
#36 ExecAppend (pstate=0x55c29c7a4c28) at ./build/../src/backend/executor/nodeAppend.c:222
#37 0x000055c29aa05787 in ExecProcNode (node=0x55c29c7a4c28) at ./build/../src/include/executor/executor.h:250
#38 setop_fill_hash_table (setopstate=0x55c29c7a4a68) at ./build/../src/backend/executor/nodeSetOp.c:365
#39 ExecSetOp (pstate=0x55c29c7a4a68) at ./build/../src/backend/executor/nodeSetOp.c:210
#40 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa08c20 <SubqueryRecheck>, accessMtd=0x55c29aa08c50 <SubqueryNext>, node=0x55c29c7a4748)
at ./build/../src/backend/executor/execScan.c:97
#41 ExecScan (node=0x55c29c7a4748, accessMtd=0x55c29aa08c50 <SubqueryNext>, recheckMtd=0x55c29aa08c20 <SubqueryRecheck>) at ./build/../src/backend/executor/execScan.c:164
---Type <return> to continue, or q <return> to quit---
#42 0x000055c29aa065e5 in ExecProcNode (node=0x55c29c7a4748) at ./build/../src/include/executor/executor.h:250
#43 CteScanNext (node=0x55c29c7f1c08) at ./build/../src/backend/executor/nodeCtescan.c:103
#44 0x000055c29a9e95aa in ExecScanFetch (recheckMtd=0x55c29aa064b0 <CteScanRecheck>, accessMtd=0x55c29aa064e0 <CteScanNext>, node=0x55c29c7f1c08)
at ./build/../src/backend/executor/execScan.c:97
#45 ExecScan (node=0x55c29c7f1c08, accessMtd=0x55c29aa064e0 <CteScanNext>, recheckMtd=0x55c29aa064b0 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:147
#46 0x000055c29a9ef3ca in ExecProcNode (node=0x55c29c7f1c08) at ./build/../src/include/executor/executor.h:250
#47 ExecAppend (pstate=0x55c29c7f19b8) at ./build/../src/backend/executor/nodeAppend.c:222
#48 0x000055c29a9ef74c in ExecProcNode (node=0x55c29c7f19b8) at ./build/../src/include/executor/executor.h:250
#49 fetch_input_tuple (aggstate=aggstate@entry=0x55c29c79c238) at ./build/../src/backend/executor/nodeAgg.c:695
#50 0x000055c29a9f1aa3 in agg_fill_hash_table (aggstate=0x55c29c79c238) at ./build/../src/backend/executor/nodeAgg.c:2539
#51 ExecAgg (pstate=0x55c29c79c238) at ./build/../src/backend/executor/nodeAgg.c:2151
#52 0x000055c29a9e9607 in ExecScanFetch (recheckMtd=0x55c29aa08c20 <SubqueryRecheck>, accessMtd=0x55c29aa08c50 <SubqueryNext>, node=0x55c29c7f11c8)
at ./build/../src/backend/executor/execScan.c:97
#53 ExecScan (node=0x55c29c7f11c8, accessMtd=0x55c29aa08c50 <SubqueryNext>, recheckMtd=0x55c29aa08c20 <SubqueryRecheck>) at ./build/../src/backend/executor/execScan.c:164
#54 0x000055c29aa05c86 in ExecProcNode (node=0x55c29c7f11c8) at ./build/../src/include/executor/executor.h:250
#55 ExecSort (pstate=0x55c29c7f0f58) at ./build/../src/backend/executor/nodeSort.c:106
#56 0x000055c29a9e35d5 in ExecProcNode (node=0x55c29c7f0f58) at ./build/../src/include/executor/executor.h:250
#57 ExecutePlan (execute_once=<optimized out>, dest=0x55c29c33d558, direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>, operation=CMD_SELECT,
use_parallel_mode=<optimized out>, planstate=0x55c29c7f0f58, estate=0x55c29c785bc8) at ./build/../src/backend/executor/execMain.c:1723
#58 standard_ExecutorRun (queryDesc=0x55c29c424c58, direction=<optimized out>, count=0, execute_once=<optimized out>) at ./build/../src/backend/executor/execMain.c:364
#59 0x000055c29ab1a0c6 in PortalRunSelect (portal=portal@entry=0x55c29c2a2758, forward=forward@entry=1 '\001', count=0, count@entry=9223372036854775807, dest=dest@entry=0x55c29c33d558)
at ./build/../src/backend/tcop/pquery.c:932
#60 0x000055c29ab1b6b0 in PortalRun (portal=portal@entry=0x55c29c2a2758, count=count@entry=9223372036854775807, isTopLevel=isTopLevel@entry=1 '\001', run_once=<optimized out>,
dest=dest@entry=0x55c29c33d558, altdest=altdest@entry=0x55c29c33d558, completionTag=0x7ffe32bad090 "") at ./build/../src/backend/tcop/pquery.c:773
#61 0x000055c29ab18cf4 in exec_execute_message (max_rows=9223372036854775807, portal_name=0x55c29c33d148 "") at ./build/../src/backend/tcop/postgres.c:2007
#62 PostgresMain (argc=<optimized out>, argv=argv@entry=0x55c29c2d7aa8, dbname=<optimized out>, username=<optimized out>) at ./build/../src/backend/tcop/postgres.c:4180
#63 0x000055c29a85868c in BackendRun (port=0x55c29c2d16a0) at ./build/../src/backend/postmaster/postmaster.c:4402
#64 BackendStartup (port=0x55c29c2d16a0) at ./build/../src/backend/postmaster/postmaster.c:4074
#65 ServerLoop () at ./build/../src/backend/postmaster/postmaster.c:1756
#66 0x000055c29aaa8781 in PostmasterMain (argc=5, argv=0x55c29c283060) at ./build/../src/backend/postmaster/postmaster.c:1364
#67 0x000055c29a85a37b in main (argc=5, argv=0x55c29c283060) at ./build/../src/backend/main/main.c:228