[postgis-tickets] [PostGIS] #4382: ST_Union of subdivided polygon fails on debbie

PostGIS trac at osgeo.org
Sat Apr 20 14:37:18 PDT 2019


#4382: ST_Union of subdivided polygon fails on debbie
---------------------+--------------------------
 Reporter:  komzpa   |      Owner:  pramsey
     Type:  defect   |     Status:  new
 Priority:  medium   |  Milestone:  PostGIS GEOS
Component:  postgis  |    Version:  2.4.x
 Keywords:           |
---------------------+--------------------------
 Reproduces on debbie, not locally or on Travis. Traces go to GEOS SRID
 handling.

 {{{
 -----------------------------------------------------------------------------
 make[2]: *** [Makefile:215: check] Error 1
 make[2]: Leaving directory
 '/var/lib/jenkins/workspace/postgis/branches/3.0/regress/core'
 make[1]: *** [Makefile:43: check] Error 2
 make[1]: Leaving directory
 '/var/lib/jenkins/workspace/postgis/branches/3.0/regress'
 make: *** [GNUmakefile:20: check] Error 1
 [logbt] saw 'make' exit with code:2 (INT)
 [logbt] Found corefile (non-tracked) at /tmp/logbt-
 coredumps/core.690.!var!lib!jenkins!workspace!pg!rel!pg10w64!bin!postgres
 [logbt] Processing cores...
 [New LWP 690]
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
 Core was generated by `postgres: postgres postgis_reg [local] SELECT
 '.
 Program terminated with signal SIGSEGV, Segmentation fault.
 #0  0x00007fe7051ae0d6 in
 geos::geom::GeometryCollection::GeometryCollection (this=0x559b48811fb0,
 newGeoms=<optimized out>, factory=<optimized out>, __in_chrg=<optimized
 out>, __vtt_parm=<optimized out>) at
 ../../include/geos/geom/Geometry.h:271
 271             return SRID;

 Thread 1 (Thread 0x7fe70ef50300 (LWP 690)):
 #0  0x00007fe7051ae0d6 in
 geos::geom::GeometryCollection::GeometryCollection (this=0x559b48811fb0,
 newGeoms=<optimized out>, factory=<optimized out>, __in_chrg=<optimized
 out>, __vtt_parm=<optimized out>) at
 ../../include/geos/geom/Geometry.h:271
         i = 2
         ngeoms = 32
         ngeoms = <optimized out>
         i = <optimized out>
 #1  0x00007fe7051af255 in
 geos::geom::GeometryFactory::createGeometryCollection
 (this=this at entry=0x559b487a51c0, newGeoms=newGeoms at entry=0x559b48802180)
 at GeometryFactory.cpp:416
 No locals.
 #2  0x00007fe705d6d262 in GEOSGeom_createCollection_r
 (extHandle=0x559b48786ea0, type=type at entry=7, geoms=0x559b48844ed8,
 ngeoms=<optimized out>) at geos_ts_c.cpp:3063
         gf = 0x559b487a51c0
         vgeoms = 0x559b48802180
         g = 0x0
         handle = 0x559b48786ea0
 #3  0x00007fe705d630e6 in GEOSGeom_createCollection (type=type at entry=7,
 geoms=<optimized out>, ngeoms=<optimized out>) at geos_c.cpp:705
 No locals.
 #4  0x00007fe705da6c4e in pgis_geometry_union_finalfn
 (fcinfo=0x7ffdcd3e8cf0) at lwgeom_geos.c:631
         state = 0x559b48844e80
         gser_out = 0x0
         g = 0x0
         g_union = 0x0
         __func__ = "pgis_geometry_union_finalfn"
 #5  0x0000559b47efa0cb in finalize_aggregate
 (aggstate=aggstate at entry=0x559b487a9e20,
 peragg=peragg at entry=0x559b487db9f8,
 resultVal=resultVal at entry=0x559b487dbaf0,
 resultIsNull=resultIsNull at entry=0x559b487dbb10 "",
 pergroupstate=<optimized out>, pergroupstate=<optimized out>) at
 nodeAgg.c:1592
         numFinalArgs = <optimized out>
         fcinfo = {flinfo = 0x559b487dba08, context = 0x559b487a9e20,
 resultinfo = 0x0, fncollation = 0, isnull = 0 '\000', nargs = 1, arg =
 {94125424922240, 0, 0, 94125424682912, 0, 140630199842754,
 13641340179549726627, 13641340179549726627, 4716133919349538816,
 4716133919349538816, 0, 94125424648480, 140630200771528, 94125424648496,
 94125424622384, 140630199834314, 4716133919349538816, 9194493494814272512,
 4716133919349538816, 94125424143296, 94125424143352, 94125424141472, 256,
 94125417708966, 1, 128, 8192, 513, 18446744073709551536, 140630365650072,
 65536, 1, 24, 0, 7, 32, 2, 94125423194128, 15, 64, 18446744073709551536,
 0, 64, 140630199799886, 7, 94125424713568, 94125424713592,
 140630199863426, 63, 112, 18446744073709551536, 1, 210453397509, 0, 0,
 511101108315, 0, 532575944814, 2, 63, 64, 3, 18446744073709551536,
 94125424144032, 140728046882704, 140630365656611, 140630200766512,
 94125424713568, 94125424648480, 94125424648544, 94125424267712,
 94125424144032, 94125424417656, 94125424417856, 672, 9194493494814272512,
 94125424648544, 94125424140928, 0, 94125424140992, 94125424291848,
 94125424288984, 94125424480992, 94125417707196, 94125424481104,
 94125417708966, 94125424481104, 94125424065600, 94125424140992,
 140630212429432, 94125424481104, 140728046882864, 94125424481104,
 140728046882864, 94125424289264, 94125415154335, 94125424499744,
 94125424291784, 140728046882928, 94125424961216}, argnull =
 "\000\000\000\000\000\000\000\000\246=\026H\233U\000\000\300\346\204H\233U\000\000x\037\201H\233U\000\000\021\017\000\000\000\000\000\000\030p\332\005\347\177\000\000\260\224zH\233U\000\000\333\372\360G\233U\000\000\212\001\000\000\233U\000\000\360\245zH\233U\000\000(\260zH\233U\000\000p\247zH\233U\000\000\210\250zH"}
         anynull = <optimized out>
         oldContext = <optimized out>
         i = <optimized out>
         lc = <optimized out>
         pertrans = <optimized out>
 #6  0x0000559b47efa57c in finalize_aggregates
 (aggstate=aggstate at entry=0x559b487a9e20,
 peraggs=peraggs at entry=0x559b487db9f8, pergroup=<optimized out>) at
 nodeAgg.c:1799
         peragg = 0x559b487db9f8
         transno = <optimized out>
         pergroupstate = <optimized out>
         econtext = <optimized out>
         aggvalues = <optimized out>
         aggnulls = <optimized out>
         aggno = 0
         transno = <optimized out>
 #7  0x0000559b47efb87a in agg_retrieve_direct (aggstate=0x559b487a9e20) at
 nodeAgg.c:2505
         tmpcontext = 0x559b487aa058
         peragg = 0x559b487db9f8
         hash_pergroups = <optimized out>
         outerslot = <optimized out>
         i = <optimized out>
         firstSlot = 0x559b487aa298
         result = <optimized out>
         hasGroupingSets = 0 '\000'
         numGroupingSets = 1
         currentSet = <optimized out>
         numReset = <optimized out>
         node = 0x559b487b8030
         econtext = 0x559b487aa1d8
         pergroup = 0x559b487dcb48
         nextSetSize = <optimized out>
         node = <optimized out>
         econtext = <optimized out>
         tmpcontext = <optimized out>
         peragg = <optimized out>
         pergroup = <optimized out>
         hash_pergroups = <optimized out>
         outerslot = <optimized out>
         firstSlot = <optimized out>
         result = <optimized out>
         hasGroupingSets = <optimized out>
         numGroupingSets = <optimized out>
         currentSet = <optimized out>
         nextSetSize = <optimized out>
         numReset = <optimized out>
         i = <optimized out>
 #8  ExecAgg (pstate=0x559b487a9e20) at nodeAgg.c:2158
         node = 0x559b487a9e20
         result = 0x0
 #9  0x0000559b47eecb4d in ExecProcNode (node=0x559b487a9e20) at
 ../../../src/include/executor/executor.h:250
 No locals.
 #10 ExecutePlan (execute_once=<optimized out>, dest=0x559b487bbb10,
 direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>,
 operation=CMD_SELECT, use_parallel_mode=<optimized out>,
 planstate=0x559b487a9e20, estate=0x559b487a9260) at execMain.c:1723
         slot = <optimized out>
         current_tuple_count = 0
         slot = <optimized out>
         current_tuple_count = <optimized out>
 #11 standard_ExecutorRun (queryDesc=0x559b486c8180, direction=<optimized
 out>, count=0, execute_once=<optimized out>) at execMain.c:364
         estate = 0x559b487a9260
         operation = CMD_SELECT
         dest = 0x559b487bbb10
         sendTuples = <optimized out>
         oldcontext = 0x559b486d9ed0
         __func__ = "standard_ExecutorRun"
 #12 0x0000559b48037e6b in PortalRunSelect (portal=0x559b487c72c0,
 forward=<optimized out>, count=0, dest=<optimized out>) at pquery.c:932
         queryDesc = 0x559b486c8180
         direction = <optimized out>
         nprocessed = <optimized out>
         __func__ = "PortalRunSelect"
 #13 0x0000559b480394d8 in PortalRun (portal=portal at entry=0x559b487c72c0,
 count=count at entry=9223372036854775807, isTopLevel=isTopLevel at entry=1
 '\001', run_once=run_once at entry=1 '\001', dest=dest at entry=0x559b487bbb10,
 altdest=altdest at entry=0x559b487bbb10, completionTag=0x7ffdcd3e9460 "") at
 pquery.c:773
         save_exception_stack = 0x7ffdcd3e9710
         save_context_stack = 0x0
         local_sigjmp_buf = {{__jmpbuf = {0, -1491573552534279655,
 94125423641592, 140728046883936, 94125424407232, 2, -4647196651462350311,
 -1491574116205614567}, __mask_was_saved = 0, __saved_mask = {__val =
 {94125419562501, 94124208291841, 140727420601965, 94124208291840,
 94125423631512, 0, 94125423631360, 94125419562501, 4, 1, 4,
 140728046883934, 88, 94125424407232, 94125423641592, 94125419014460}}}}
         result = <optimized out>
         nprocessed = <optimized out>
         saveTopTransactionResourceOwner = 0x559b486d45a0
         saveTopTransactionContext = 0x559b486d4850
         saveActivePortal = 0x0
         saveResourceOwner = 0x559b486d45a0
         savePortalContext = 0x0
         saveMemoryContext = 0x559b486d4850
         __func__ = "PortalRun"
 #14 0x0000559b480351b1 in exec_simple_query (query_string=0x559b487259b0
 "with inverted_geom as (\n    select ST_Difference(\n", ' ' <repeats 15
 times>, "ST_Expand('SRID=3857;POINT(0 0)' :: geometry, 20000000),\n", ' '
 <repeats 15 times>, "ST_Buffer(\n", ' ' <repeats 19 times>,
 "'SRID=3857;POINT(0 0)' :: geometr"...) at postgres.c:1122
         parsetree = 0x559b4870c3c0
         portal = 0x559b487c72c0
         snapshot_set = <optimized out>
         commandTag = <optimized out>
         completionTag =
 "\000\000\000\000\002\000\000\000Q\000\000\000\000\000\000\000\260\224>\315\375\177\000\000\360\225>\315\375\177\000\000\260YrH\233U\000\000\200!jH\233U\000\000\000\000\000\000\000\000\000\000\320\001mH\233U\000"
         querytree_list = <optimized out>
         plantree_list = <optimized out>
         receiver = 0x559b487bbb10
         format = 0
         dest = DestRemote
         oldcontext = 0x559b486d4850
         parsetree_list = 0x559b4870c420
         parsetree_item = 0x559b4870c3f8
         save_log_statement_stats = 0 '\000'
         was_logged = 0 '\000'
         isTopLevel = 1 '\001'
         msec_str =
 "\000\000\000\000\002\000\000\000Q\000\000\000\000\000\000\000\260\224>\315\375\177\000\000\360\225>\315\375\177\000"
         __func__ = "exec_simple_query"
 #15 0x0000559b480368e2 in PostgresMain (argc=<optimized out>,
 argv=argv at entry=0x559b486d01d0, dbname=<optimized out>,
 username=<optimized out>) at postgres.c:4117
         query_string = 0x559b487259b0 "with inverted_geom as (\n    select
 ST_Difference(\n", ' ' <repeats 15 times>, "ST_Expand('SRID=3857;POINT(0
 0)' :: geometry, 20000000),\n", ' ' <repeats 15 times>, "ST_Buffer(\n", '
 ' <repeats 19 times>, "'SRID=3857;POINT(0 0)' :: geometr"...
         firstchar = <optimized out>
         input_message = {data = 0x559b487259b0 "with inverted_geom as (\n
 select ST_Difference(\n", ' ' <repeats 15 times>,
 "ST_Expand('SRID=3857;POINT(0 0)' :: geometry, 20000000),\n", ' ' <repeats
 15 times>, "ST_Buffer(\n", ' ' <repeats 19 times>, "'SRID=3857;POINT(0 0)'
 :: geometr"..., len = 439, maxlen = 1024, cursor = 439}
         local_sigjmp_buf = {{__jmpbuf = {140728046884368,
 4646110874158869017, 94125423206784, 140728046884928, 94125423395280,
 94125420647040, -4647196651388949991, -1491574109633795559},
 __mask_was_saved = 1, __saved_mask = {__val = {0, 94125423395208, 1024,
 140728046884800, 140728046884928, 94125423395280, 94125417734909, 0,
 94125417708966, 94125420647040, 140728046884800, 140728046884928,
 94125417623520, 94125423333184, 4398046511104, 0}}}}
         send_ready_for_query = 0 '\000'
         disable_idle_in_transaction_timeout = 0 '\000'
         __func__ = "PostgresMain"
 #16 0x0000559b47fbb497 in BackendRun (port=0x559b486c9530) at
 postmaster.c:4406
         ac = 1
         secs = 609109337
         usecs = 382752
         i = 1
         av = 0x559b486d01d0
         maxac = <optimized out>
         av = <optimized out>
         maxac = <optimized out>
         ac = <optimized out>
         secs = <optimized out>
         usecs = <optimized out>
         i = <optimized out>
         __func__ = "BackendRun"
 #17 BackendStartup (port=0x559b486c9530) at postmaster.c:4078
         bn = <optimized out>
         pid = <optimized out>
         bn = <optimized out>
         pid = <optimized out>
         __func__ = "BackendStartup"
         save_errno = <optimized out>
 #18 ServerLoop () at postmaster.c:1756
         port = 0x559b486c9530
         i = <optimized out>
         rmask = {fds_bits = {32, 0 <repeats 15 times>}}
         selres = <optimized out>
         now = <optimized out>
         readmask = {fds_bits = {56, 0 <repeats 15 times>}}
         nSockets = 6
         last_lockfile_recheck_time = <optimized out>
         last_touch_time = 1555793903
         __func__ = "ServerLoop"
 #19 0x0000559b47fbc33c in PostmasterMain (argc=3, argv=0x559b4869ffd0) at
 postmaster.c:1364
         opt = <optimized out>
         status = <optimized out>
         userDoption = <optimized out>
         listen_addr_saved = <optimized out>
         i = <optimized out>
         output_config_variable = <optimized out>
         __func__ = "PostmasterMain"
 #20 0x0000559b47d3fd86 in main (argc=3, argv=0x559b4869ffd0) at main.c:228
 No locals.
 }}}

-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/4382>
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