[geos-devel] [GEOS] #1035: VoronoiLines hangs indefinitely on multipoint

GEOS geos-trac at osgeo.org
Tue Jul 21 05:50:38 PDT 2020


#1035: VoronoiLines hangs indefinitely on multipoint
------------------------+--------------------------
 Reporter:  robe        |      Owner:  geos-devel@…
     Type:  defect      |     Status:  new
 Priority:  blocker     |  Milestone:  3.9.0
Component:  Default     |    Version:  master
 Severity:  Unassigned  |   Keywords:
------------------------+--------------------------
 I tested on 3.8.0 (still have to test on 3.8.1) but definitely an issue on
 GEOS head.


 {{{
 SELECT ST_VoronoiLines('MULTIPOINT(-10 40,5 40,20 40,35 40,50 40,-10 55,5
 55,20 55,35 55,50 55,-10 70,5 70,20 70,35 70,50 70)'::geometry, 20.1,
 'POINT(-11.1111111 40)'::geometry)
 }}}


 See related PostGIS ticket

 https://trac.osgeo.org/postgis/ticket/4726

 Raul's trace


 {{{
 #0  0x00007fc3eacf126c in geos::triangulate::quadedge::Vertex::isCCW
 (this=<optimized out>, b=..., c=...) at
 ../../../include/geos/triangulate/quadedge/Vertex.h:226
 #1  geos::triangulate::quadedge::Vertex::rightOf (this=0x55bba48b9720,
 e=...) at Vertex.cpp:83
 #2  0x00007fc3eace807c in
 geos::triangulate::IncrementalDelaunayTriangulator::insertSite
 (this=<optimized out>, v=...) at IncrementalDelaunayTriangulator.cpp:90
 #3  0x00007fc3eace7e4b in
 geos::triangulate::IncrementalDelaunayTriangulator::insertSites
 (this=0x7ffe3cf96408, vertices=...) at
 IncrementalDelaunayTriangulator.cpp:40
 #4  0x00007fc3eace9f5d in geos::triangulate::VoronoiDiagramBuilder::create
 (this=0x7ffe3cf964b8) at VoronoiDiagramBuilder.cpp:93
 #5  0x00007fc3eacea45b in
 geos::triangulate::VoronoiDiagramBuilder::getDiagramEdges
 (this=0x7ffe3cf964b8, geomFact=...) at VoronoiDiagramBuilder.cpp:122
 #6  0x00007fc3eba9c83e in GEOSVoronoiDiagram_r::$_188::operator()
 (this=<optimized out>) at geos_ts_c.cpp:3261
 #7  execute<GEOSVoronoiDiagram_r::$_188,
 (decltype(nullptr))0>(GEOSContextHandle_HS*,
 GEOSVoronoiDiagram_r::$_188&&) (extHandle=0x55bba48b88b0, f=...) at
 geos_ts_c.cpp:379
 #8  GEOSVoronoiDiagram_r (extHandle=0x55bba48b88b0, g1=0x55bba48b6840,
 env=0x55bba48e6f40, tolerance=20.100000000000001, onlyEdges=1) at
 geos_ts_c.cpp:3253
 #9  0x00007fc3ebc02ecb in lwgeom_voronoi_diagram (g=<optimized out>,
 env=0x7ffe3cf965c0, tolerance=20.100000000000001,
 output_edges=-1534355264) at lwgeom_geos.c:1926
 #10 0x00007fc3ebb3267e in ST_Voronoi (fcinfo=0x55bba48fbb20) at
 lwgeom_geos.c:3465
 #11 0x000055bba3c126e1 in ExecInterpExpr (state=<optimized out>,
 econtext=<optimized out>, isnull=0x7ffe3cf9675f) at execExprInterp.c:625
 #12 0x000055bba3c45874 in ExecEvalExprSwitchContext (state=0x55bba48fba48,
 econtext=0x55bba48fb770, isNull=0x7ffe3cf9675f) at
 ../../../src/include/executor/executor.h:307
 [...]

 (gdb) c
 Continuing.
 ^C
 Program received signal SIGINT, Interrupt.
 geos::triangulate::quadedge::Vertex::isCCW (this=<optimized out>, b=...,
 c=...) at ../../../include/geos/triangulate/quadedge/Vertex.h:227
 227                    > (b.p.y - p.y) * (c.p.x - p.x);
 (gdb) bt
 #0  geos::triangulate::quadedge::Vertex::isCCW (this=<optimized out>,
 b=..., c=...) at ../../../include/geos/triangulate/quadedge/Vertex.h:227
 #1  geos::triangulate::quadedge::Vertex::rightOf (this=0x55bba48b9ee0,
 e=...) at Vertex.cpp:83
 #2  0x00007fc3eace807c in
 geos::triangulate::IncrementalDelaunayTriangulator::insertSite
 (this=<optimized out>, v=...) at IncrementalDelaunayTriangulator.cpp:90
 #3  0x00007fc3eace7e4b in
 geos::triangulate::IncrementalDelaunayTriangulator::insertSites
 (this=0x7ffe3cf96408, vertices=...) at
 IncrementalDelaunayTriangulator.cpp:40
 #4  0x00007fc3eace9f5d in geos::triangulate::VoronoiDiagramBuilder::create
 (this=0x7ffe3cf964b8) at VoronoiDiagramBuilder.cpp:93
 #5  0x00007fc3eacea45b in
 geos::triangulate::VoronoiDiagramBuilder::getDiagramEdges
 (this=0x7ffe3cf964b8, geomFact=...) at VoronoiDiagramBuilder.cpp:122
 #6  0x00007fc3eba9c83e in GEOSVoronoiDiagram_r::$_188::operator()
 (this=<optimized out>) at geos_ts_c.cpp:3261
 #7  execute<GEOSVoronoiDiagram_r::$_188,
 (decltype(nullptr))0>(GEOSContextHandle_HS*,
 GEOSVoronoiDiagram_r::$_188&&) (extHandle=0x55bba48b88b0, f=...) at
 geos_ts_c.cpp:379
 #8  GEOSVoronoiDiagram_r (extHandle=0x55bba48b88b0, g1=0x55bba48b6840,
 env=0x55bba48e6f40, tolerance=20.100000000000001, onlyEdges=1) at
 geos_ts_c.cpp:3253
 #9  0x00007fc3ebc02ecb in lwgeom_voronoi_diagram (g=<optimized out>,
 env=0x7ffe3cf965c0, tolerance=20.100000000000001,
 output_edges=-1534355264) at lwgeom_geos.c:1926
 #10 0x00007fc3ebb3267e in ST_Voronoi (fcinfo=0x55bba48fbb20) at
 lwgeom_geos.c:3465
 [...]
 }}}

-- 
Ticket URL: <https://trac.osgeo.org/geos/ticket/1035>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).


More information about the geos-devel mailing list