I've recently rebuild my pgpointcloud setup but am running into a segfault when doing PC_Intersection(patch, geom)
. According to the backtrace below this seems to be traceable to the laz-perf decoder but I'm not entirely sure.
Can someone confirm that it is indeed coming from the laz-perf decoder?
I am running on a postgres 10 ubuntu package and fresh builds of:
laszip-src-3.2.9
laz-perf-1.3.0
pointcloud-1.2.0
Data in the database has been placed there before by pgpointcloud with likely the same release numbers.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007fc15eda2535 in __GI_abort () at abort.c:79
#2 0x00007fc15eda240f in __assert_fail_base (fmt=0x7fc15ef30588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
assertion=0x7fb9202660dc "sym < (1<<16)", file=0x7fb920266050 "/usr/local/include/laz-perf/decoder.hpp",
line=170, function=<optimized out>) at assert.c:92
#3 0x00007fc15edb2012 in __GI___assert_fail (assertion=0x7fb9202660dc "sym < (1<<16)",
file=0x7fb920266050 "/usr/local/include/laz-perf/decoder.hpp", line=170,
function=0x7fb920266600 <laszip::decoders::arithmetic<LazPerfBuf>::readShort()::__PRETTY_FUNCTION__> "U16 laszip::decoders::arithmetic<TInputStream>::readShort() [with TInputStream = LazPerfBuf; U16 = short unsigned int]")
at assert.c:101
#4 0x00007fb920262a2e in laszip::decoders::arithmetic<LazPerfBuf>::readShort() ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#5 0x00007fb920262458 in laszip::decoders::arithmetic<LazPerfBuf>::readBits(unsigned int) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#6 0x00007fb920261f50 in int laszip::decompressors::integer::readCorrector<laszip::decoders::arithmetic<LazPerfBuf>, laszip::models::arithmetic>(laszip::decoders::arithmetic<LazPerfBuf>&, laszip::models::arithmetic&) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#7 0x00007fb920261bb8 in int laszip::decompressors::integer::decompress<laszip::decoders::arithmetic<LazPerfBuf> >(laszip::decoders::arithmetic<LazPerfBuf>&, int, unsigned int) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#8 0x00007fb9202611c8 in int laszip::formats::field<int, laszip::formats::standard_diff_method<int> >::decompressWith<laszip::decoders::arithmetic<LazPerfBuf> >(laszip::decoders::arithmetic<LazPerfBuf>&) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#9 0x00007fb920260b9e in laszip::formats::dynamic_decompressor_field<laszip::decoders::arithmetic<LazPerfBuf>, laszip::formats::field<int, laszip::formats::standard_diff_method<int> > >::decompressRaw(char*) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#10 0x00007fb920259c1e in laszip::formats::dynamic_field_decompressor<laszip::decoders::arithmetic<LazPerfBuf> >::decompress(char*) () from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#11 0x00007fb920257d64 in LazPerfDecompressor::decompress(unsigned char*, unsigned long) ()
from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#12 0x00007fb9202574f1 in lazperf_uncompress_from_compressed () from /usr/lib/postgresql/10/lib/pointcloud-1.2.so
#13 0x00007fb920256f83 in pc_patch_uncompressed_from_lazperf (palaz=0x55e6f8560cc0) at pc_patch_lazperf.c:96
#14 0x00007fb92025705b in pc_pointlist_from_lazperf (palaz=<optimized out>) at pc_patch_lazperf.c:77
#15 0x00007fb9202536b5 in pc_pointlist_from_patch (patch=patch@entry=0x55e6f8560cc0) at pc_pointlist.c:130
#16 0x00007fb92024a395 in pcpatch_unnest (fcinfo=0x55e6f8537d08) at pc_access.c:589
#17 0x000055e6ec765e8b in ExecMakeFunctionResultSet (fcache=0x55e6f8537c98,
econtext=econtext@entry=0x55e6f85371d8, isNull=<optimized out>, isDone=isDone@entry=0x55e6f8537c80)
at ./build/../src/backend/executor/execSRF.c:579
#18 0x000055e6ec77f3ef in ExecProjectSRF (node=node@entry=0x55e6f85370c8, continuing=continuing@entry=0 '\000')
at ./build/../src/backend/executor/nodeProjectSet.c:166
#19 0x000055e6ec77f4b4 in ExecProjectSet (pstate=0x55e6f85370c8)
at ./build/../src/backend/executor/nodeProjectSet.c:96
#20 0x000055e6ec781e2d in ExecProcNode (node=0x55e6f85370c8) at ./build/../src/include/executor/executor.h:250
#21 CteScanNext (node=0x55e6f8538c18) at ./build/../src/backend/executor/nodeCtescan.c:103
#22 0x000055e6ec764b89 in ExecScanFetch (recheckMtd=0x55e6ec781d10 <CteScanRecheck>,
accessMtd=0x55e6ec781d40 <CteScanNext>, node=0x55e6f8538c18) at ./build/../src/backend/executor/execScan.c:97
#23 ExecScan (node=0x55e6f8538c18, accessMtd=0x55e6ec781d40 <CteScanNext>,
recheckMtd=0x55e6ec781d10 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:164
#24 0x000055e6ec781e2d in ExecProcNode (node=0x55e6f8538c18) at ./build/../src/include/executor/executor.h:250
#25 CteScanNext (node=0x55e6f853a1e8) at ./build/../src/backend/executor/nodeCtescan.c:103
#26 0x000055e6ec764b89 in ExecScanFetch (recheckMtd=0x55e6ec781d10 <CteScanRecheck>,
accessMtd=0x55e6ec781d40 <CteScanNext>, node=0x55e6f853a1e8) at ./build/../src/backend/executor/execScan.c:97
#27 ExecScan (node=0x55e6f853a1e8, accessMtd=0x55e6ec781d40 <CteScanNext>,
recheckMtd=0x55e6ec781d10 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:164
#28 0x000055e6ec781e2d in ExecProcNode (node=0x55e6f853a1e8) at ./build/../src/include/executor/executor.h:250
#29 CteScanNext (node=0x55e6f853c028) at ./build/../src/backend/executor/nodeCtescan.c:103
#30 0x000055e6ec764d39 in ExecScanFetch (recheckMtd=0x55e6ec781d10 <CteScanRecheck>,
accessMtd=0x55e6ec781d40 <CteScanNext>, node=0x55e6f853c028) at ./build/../src/backend/executor/execScan.c:97
#31 ExecScan (node=0x55e6f853c028, accessMtd=0x55e6ec781d40 <CteScanNext>,
--Type <RET> for more, q to quit, c to continue without paging--
recheckMtd=0x55e6ec781d10 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:147
#32 0x000055e6ec76acdc in ExecProcNode (node=0x55e6f853c028) at ./build/../src/include/executor/executor.h:250
#33 fetch_input_tuple (aggstate=aggstate@entry=0x55e6f853b9e0) at ./build/../src/backend/executor/nodeAgg.c:695
#34 0x000055e6ec76cf58 in agg_retrieve_direct (aggstate=0x55e6f853b9e0)
at ./build/../src/backend/executor/nodeAgg.c:2362
#35 ExecAgg (pstate=0x55e6f853b9e0) at ./build/../src/backend/executor/nodeAgg.c:2173
#36 0x000055e6ec781e2d in ExecProcNode (node=0x55e6f853b9e0) at ./build/../src/include/executor/executor.h:250
#37 CteScanNext (node=0x55e6f854a938) at ./build/../src/backend/executor/nodeCtescan.c:103
#38 0x000055e6ec764d39 in ExecScanFetch (recheckMtd=0x55e6ec781d10 <CteScanRecheck>,
accessMtd=0x55e6ec781d40 <CteScanNext>, node=0x55e6f854a938) at ./build/../src/backend/executor/execScan.c:97
#39 ExecScan (node=0x55e6f854a938, accessMtd=0x55e6ec781d40 <CteScanNext>,
recheckMtd=0x55e6ec781d10 <CteScanRecheck>) at ./build/../src/backend/executor/execScan.c:147
#40 0x000055e6ec75e9b3 in ExecProcNode (node=0x55e6f854a938) at ./build/../src/include/executor/executor.h:250
#41 ExecutePlan (execute_once=<optimized out>, dest=0x55e6f8524aa8, direction=<optimized out>, numberTuples=1,
sendTuples=<optimized out>, operation=CMD_SELECT, use_parallel_mode=<optimized out>,
planstate=0x55e6f854a938, estate=0x55e6f8536e28) at ./build/../src/backend/executor/execMain.c:1723
#42 standard_ExecutorRun (queryDesc=0x55e6f8524af8, direction=<optimized out>, count=1,
execute_once=<optimized out>) at ./build/../src/backend/executor/execMain.c:364
#43 0x00007fc15fc09075 in pgss_ExecutorRun (queryDesc=0x55e6f8524af8, direction=ForwardScanDirection, count=1,
execute_once=<optimized out>) at ./build/../contrib/pg_stat_statements/pg_stat_statements.c:889
#44 0x000055e6ec769b37 in postquel_getnext (es=0x55e6f8524778, es=0x55e6f8524778, fcache=0x55e6f8514da8,
fcache=0x55e6f8514da8) at ./build/../src/backend/executor/functions.c:1169
#45 fmgr_sql (fcinfo=0x55e6f7736d58) at ./build/../src/backend/executor/functions.c:1159
#46 0x000055e6ec75b131 in ExecInterpExpr (state=0x55e6f77368c0, econtext=0x55e6eddf1608, isnull=<optimized out>)
at ./build/../src/backend/executor/execExprInterp.c:650
#47 0x000055e6ec77f09e in ExecEvalExprSwitchContext (isNull=0x7ffd688ec637 "", econtext=0x55e6eddf1608,
state=0x55e6f77368c0) at ./build/../src/include/executor/executor.h:308
#48 ExecProject (projInfo=0x55e6f77368b8) at ./build/../src/include/executor/executor.h:342
#49 ExecNestLoop (pstate=<optimized out>) at ./build/../src/backend/executor/nodeNestloop.c:241
#50 0x000055e6ec75e9b3 in ExecProcNode (node=0x55e6eddf14f8) at ./build/../src/include/executor/executor.h:250
#51 ExecutePlan (execute_once=<optimized out>, dest=0x55e6f6f91288, direction=<optimized out>, numberTuples=0,
sendTuples=<optimized out>, operation=CMD_SELECT, use_parallel_mode=<optimized out>,
planstate=0x55e6eddf14f8, estate=0x55e6eddf12b8) at ./build/../src/backend/executor/execMain.c:1723
#52 standard_ExecutorRun (queryDesc=0x55e6eea34e98, direction=<optimized out>, count=0,
execute_once=<optimized out>) at ./build/../src/backend/executor/execMain.c:364
#53 0x00007fc15fc09075 in pgss_ExecutorRun (queryDesc=0x55e6eea34e98, direction=ForwardScanDirection, count=0,
execute_once=<optimized out>) at ./build/../contrib/pg_stat_statements/pg_stat_statements.c:889
#54 0x000055e6ec8a11fc in PortalRunSelect (portal=portal@entry=0x55e6ede53698, forward=forward@entry=1 '\001',
count=0, count@entry=9223372036854775807, dest=dest@entry=0x55e6f6f91288)
at ./build/../src/backend/tcop/pquery.c:932
#55 0x000055e6ec8a2788 in PortalRun (portal=portal@entry=0x55e6ede53698, count=count@entry=9223372036854775807,
isTopLevel=isTopLevel@entry=1 '\001', run_once=run_once@entry=1 '\001', dest=dest@entry=0x55e6f6f91288,
altdest=altdest@entry=0x55e6f6f91288, completionTag=0x7ffd688eca00 "")
at ./build/../src/backend/tcop/pquery.c:773
#56 0x000055e6ec89e4fa in exec_simple_query (
query_string=0x55e6eddf61f8 "SELECT PC_Intersection(pa,geom) FROM tmptom.blocks a INNER JOIN ahn3_pointcloud.vw_buildings b ON PC_Intersects(a.geom, b.pa) WHERE blockid = '0363100012073393';")
at ./build/../src/backend/tcop/postgres.c:1122
#57 0x000055e6ec89fcd8 in PostgresMain (argc=<optimized out>, argv=argv@entry=0x55e6edd9a870,
dbname=<optimized out>, username=<optimized out>) at ./build/../src/backend/tcop/postgres.c:4117
#58 0x000055e6ec82cdd3 in BackendRun (port=0x55e6edd920b0) at ./build/../src/backend/postmaster/postmaster.c:4402
#59 BackendStartup (port=0x55e6edd920b0) at ./build/../src/backend/postmaster/postmaster.c:4074
#60 ServerLoop () at ./build/../src/backend/postmaster/postmaster.c:1756
#61 0x000055e6ec82dc52 in PostmasterMain (argc=5, argv=<optimized out>)
at ./build/../src/backend/postmaster/postmaster.c:1364
#62 0x000055e6ec5cbd29 in main (argc=5, argv=0x55e6edd37c00) at ./build/../src/backend/main/main.c:228