[postgis-tickets] [PostGIS] #3122: Topology totopgeom crashes on PostgreSQL 9.5

PostGIS trac at osgeo.org
Fri May 22 10:35:51 PDT 2015


#3122: Topology totopgeom crashes on PostgreSQL 9.5
-----------------------+---------------------------
  Reporter:  robe      |      Owner:  strk
      Type:  defect    |     Status:  new
  Priority:  blocker   |  Milestone:  PostGIS 2.2.0
 Component:  topology  |    Version:  trunk
Resolution:            |   Keywords:  pg9.5
-----------------------+---------------------------
Changes (by robe):

 * keywords:   => pg9.5


Comment:

 Crashes on my development mingw64 machine too running latest PostgreSQL.
 Interstingly pramsey is getting no crashing on his mac.

 I isolated the issue to multigeometries.  The crashing starts at


 {{{
 with inp as ( select 'MULTIPOINT((0 -10),(5 -10))' ::geometry as g)
 select St_AsText(g), ST_Equals(totopogeom(g, 'tt', 1)::geometry, g) from
 inp;

 }}}

 Backtrace looks like this:


 {{{
 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 4252.0x3cf4]
 array_contain_compare (array1=array1 at entry=0xdd94200,
 array2=array2 at entry=0xde69db8, collation=<optimized out>,
 matchall=matchall at entry=1 '\001', fn_extra=0xdeac920) at arrayfuncs.c:4116
 4116                            if (isnull2)
 (gdb) bt
 #0  array_contain_compare (array1=array1 at entry=0xdd94200,
 array2=array2 at entry=0xde69db8, collation=<optimized out>,
 matchall=matchall at entry=1 '\001', fn_extra=0xdeac920) at arrayfuncs.c:4116
 #1  0x00000000006ab084 in arraycontains (fcinfo=0xdeac958) at
 arrayfuncs.c:4181
 #2  0x000000000057bf4b in ExecMakeFunctionResultNoSets (fcache=0xdeac8e8,
 econtext=0x48eef28, isNull=0x273da80 "", isDone=<optimized out>) at
 execQual.c:2018
 #3  0x000000006ab4bcb2 in exec_eval_simple_expr (rettypmod=0x273d99c,
 rettype=<optimized out>, isNull=0x273da80 "", result=<synthetic pointer>,
 expr=0xddf5d58, estate=0x273e100) at pl_exec.c:5385
 #4  exec_eval_expr (estate=0x273e100, expr=0xddf5d58, isNull=0x273da80 "",
 rettype=<optimized out>, rettypmod=0x273d99c) at pl_exec.c:4974
 #5  0x000000006ab4db50 in exec_eval_boolean
 (estate=estate at entry=0x273e100, expr=<optimized out>,
 isNull=isNull at entry=0x273da80 "") at pl_exec.c:4940
 #6  0x000000006ab501d3 in exec_stmt_if (stmt=0xddf74d8, estate=0x273e100)
 at pl_exec.c:1713
 #7  exec_stmt (stmt=0xddf74d8, estate=0x273e100) at pl_exec.c:1464
 #8  exec_stmts (estate=0x273e100, stmts=<optimized out>) at pl_exec.c:1415
 #9  0x000000006ab53812 in exec_for_query (estate=estate at entry=0x273e100,
 stmt=stmt at entry=0xddf57c8, portal=0x48d8e98,
 prefetch_ok=prefetch_ok at entry=1 '\001') at pl_exec.c:5158
 #10 0x000000006ab4f89f in exec_stmt_fors (stmt=0xddf57c8,
 estate=0x273e100) at pl_exec.c:2142
 #11 exec_stmt (stmt=0xddf57c8, estate=0x273e100) at pl_exec.c:1484
 #12 exec_stmts (estate=0x273e100, stmts=<optimized out>) at pl_exec.c:1415
 #13 0x000000006ab53812 in exec_for_query (estate=estate at entry=0x273e100,
 stmt=stmt at entry=0xddf44b0, portal=0x48d8d80,
 prefetch_ok=prefetch_ok at entry=1 '\001') at pl_exec.c:5158
 #14 0x000000006ab4f89f in exec_stmt_fors (stmt=0xddf44b0,
 estate=0x273e100) at pl_exec.c:2142
 #15 exec_stmt (stmt=0xddf44b0, estate=0x273e100) at pl_exec.c:1484
 #16 exec_stmts (estate=0x273e100, stmts=<optimized out>) at pl_exec.c:1415
 #17 0x000000006ab525e2 in exec_stmt_block (estate=0x0,
 estate at entry=0x273e100, block=0xa004e0 <error_context_stack>) at
 pl_exec.c:1353
 #18 0x000000006ab52820 in plpgsql_exec_function (func=0x4910510,
 func at entry=0xddd31c0, fcinfo=0xddd31c0, fcinfo at entry=0x273e358,
 simple_eval_estate=simple_eval_estate at entry=0x0) at pl_exec.c:402
 #19 0x000000006ab4736b in plpgsql_call_handler (fcinfo=0x273e358) at
 pl_handler.c:253
 #20 0x000000000057bf4b in ExecMakeFunctionResultNoSets (fcache=0xddd3150,
 econtext=0x48eee30, isNull=0x273e4a7 "", isDone=<optimized out>) at
 execQual.c:2018
 #21 0x000000006ab4bcb2 in exec_eval_simple_expr (rettypmod=0x273e4ac,
 rettype=<optimized out>, isNull=0x273e4a7 "", result=<synthetic pointer>,
 expr=0x494b270, estate=0x273e850) at pl_exec.c:5385
 #22 exec_eval_expr (estate=0x273e850, expr=0x494b270, isNull=0x273e4a7 "",
 rettype=<optimized out>, rettypmod=0x273e4ac) at pl_exec.c:4974
 #23 0x000000006ab4dca6 in exec_assign_expr (estate=estate at entry=0x273e850,
 target=0x49405f8, expr=0x494b270) at pl_exec.c:4148
 #24 0x000000006ab501ac in exec_stmt_assign (stmt=<optimized out>,
 stmt=<optimized out>, estate=0x273e850) at pl_exec.c:1568
 #25 exec_stmt (stmt=0x494b360, estate=0x273e850) at pl_exec.c:1452
 #26 exec_stmts (estate=0x273e850, stmts=<optimized out>) at pl_exec.c:1415
 #27 0x000000006ab525e2 in exec_stmt_block (estate=0x0,
 estate at entry=0x273e850, block=0x48eee30) at pl_exec.c:1353
 #28 0x000000006ab52820 in plpgsql_exec_function (func=0x283c840,
 func at entry=0x4930cb8, fcinfo=0x4930cb8, fcinfo at entry=0x273eaa8,
 simple_eval_estate=simple_eval_estate at entry=0x0) at pl_exec.c:402
 #29 0x000000006ab4736b in plpgsql_call_handler (fcinfo=0x273eaa8) at
 pl_handler.c:253
 #30 0x000000000057bf4b in ExecMakeFunctionResultNoSets (fcache=0x4930c48,
 econtext=0x4926c30, isNull=0x4928200 "", isDone=<optimized out>) at
 execQual.c:2018
 #31 0x000000000057bef1 in ExecMakeFunctionResultNoSets (fcache=0x4927e50,
 econtext=0x4926c30, isNull=0x49279e8 "", isDone=<optimized out>) at
 execQual.c:1992
 #32 0x000000000057bef1 in ExecMakeFunctionResultNoSets (fcache=0x4927638,
 econtext=0x4926c30, isNull=0x4931b61
 "\177~\177\177\177\177\177\230xƒ\002", isDone=<optimized out>) at
 execQual.c:1992
 #33 0x0000000000581eb0 in ExecTargetList (isDone=0x273ed1c,
 itemIsDone=0x4931cd8, isnull=0x4931b60 "", values=0x4931b38,
 econtext=0x4926c30, targetlist=0x4931c78) at execQual.c:5363
 #34 ExecProject (projInfo=projInfo at entry=0x4931b80,
 isDone=isDone at entry=0x273ed1c) at execQual.c:5578
 #35 0x0000000000582300 in ExecScan (node=node at entry=0x48e34d8,
 accessMtd=accessMtd at entry=0x598910 <CteScanNext>,
 recheckMtd=recheckMtd at entry=0x598900 <CteScanRecheck>) at execScan.c:207
 #36 0x0000000000598a53 in ExecCteScan (node=node at entry=0x48e34d8) at
 nodeCtescan.c:158
 #37 0x000000000057ad18 in ExecProcNode (node=node at entry=0x48e34d8) at
 execProcnode.c:450
 #38 0x0000000000577a6e in ExecutePlan (dest=0x49306c8,
 direction=<optimized out>, numberTuples=0, sendTuples=1 '\001',
 operation=CMD_SELECT, planstate=0x48e34d8, estate=0x48e2cb8) at
 execMain.c:1550
 #39 standard_ExecutorRun (queryDesc=0x2835098, direction=<optimized out>,
 count=0) at execMain.c:337
 #40 0x000000000068ba68 in PortalRunSelect (portal=portal at entry=0x48d8c68,
 forward=forward at entry=1 '\001', count=0, count at entry=41153104,
 dest=dest at entry=0x0) at pquery.c:952
 #41 0x000000000068d0c6 in PortalRun (portal=0x273eeb0,
 portal at entry=0x48d8c68, count=41153104, count at entry=2147483647,
 isTopLevel=isTopLevel at entry=0 '\000', dest=0x0, dest at entry=0x49306c8,
 altdest=altdest at entry=0x49306c8, completionTag=0x273f210 "",
 completionTag at entry=0x40000000093 <error: Cannot access memory at address
 0x40000000093>) at pquery.c:796
 #42 0x000000000068a964 in exec_simple_query (query_string=0x0) at
 postgres.c:1104
 #43 PostgresMain (argc=<optimized out>, argv=argv at entry=0x3181a8,
 dbname=0x10000f000e000d <error: Cannot access memory at address
 0x10000f000e000d>, username=<optimized out>) at postgres.c:4025
 #44 0x000000000062a913 in BackendRun (port=0x273f400) at postmaster.c:4162
 #45 SubPostmasterMain (argc=argc at entry=3, argv=argv at entry=0x27a7fa0) at
 postmaster.c:4649
 #46 0x00000000007c6830 in main (argc=3, argv=0x27a7fa0) at main.c:198
 (gdb)
 }}}

--
Ticket URL: <http://trac.osgeo.org/postgis/ticket/3122#comment:1>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list