Opened 13 months ago

Last modified 12 months ago

#5586 closed defect

Crash bug when using ST_Intersects — at Version 1

Reported by: Wenjing Owned by: pramsey
Priority: critical Milestone: PostGIS GEOS
Component: postgis Version: 3.4.x
Keywords: Cc:

Description (last modified by Wenjing)

DROP TABLE IF EXISTS t;
CREATE TABLE t (geom geometry);
INSERT INTO t (geom) VALUES ((ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,1 0))')));
INSERT INTO t (geom) SELECT ST_Boundary(t.geom) FROM t;
SELECT * FROM t As a1 JOIN t As a2 ON ST_Intersects(a1.geom, a2.geom);

stack trace:

Program received signal SIGSEGV, Segmentation fault.
0x00007fc000d0cf4c in ?? () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
(gdb) bt
#0  0x00007fc000d0cf4c in ?? () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
#1  0x00007fc000d34f22 in geos::algorithm::PointLocator::computeLocation(geos::geom::Coordinate const&, geos::geom::Geometry const*) () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
#2  0x00007fc000d35078 in geos::algorithm::PointLocator::computeLocation(geos::geom::Coordinate const&, geos::geom::Geometry const*) () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
#3  0x00007fc000d35209 in geos::algorithm::PointLocator::locate(geos::geom::Coordinate const&, geos::geom::Geometry const*) () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
#4  0x00007fc000d53aed in geos::geom::prep::BasicPreparedGeometry::isAnyTargetComponentInTest(geos::geom::Geometry const*) const () from /lib/x86_64-linux-gnu/libgeos.so.3.10.2
#5  0x00007fc00142c15c in GEOSPreparedIntersects_r () from /lib/x86_64-linux-gnu/libgeos_c.so.1
#6  0x00007fc001488f74 in ST_Intersects (fcinfo=0x55d8585cbaf0) at lwgeom_geos.c:2458
#7  0x000055d8577d57e2 in ExecInterpExpr (state=0x55d8585cb618, econtext=0x55d8585ca580, isnull=0x7ffd0c310a6f)
    at execExprInterp.c:758
#8  0x000055d85782ad25 in ExecEvalExprSwitchContext (state=0x55d8585cb618, econtext=0x55d8585ca580, 
    isNull=0x7ffd0c310a6f) at ../../../src/include/executor/executor.h:355
#9  0x000055d85782ae24 in ExecQual (state=0x55d8585cb618, econtext=0x55d8585ca580)
    at ../../../src/include/executor/executor.h:424
#10 0x000055d85782b15c in ExecNestLoop (pstate=0x55d8585ca478) at nodeNestloop.c:214
#11 0x000055d8577e13c3 in ExecProcNode (node=0x55d8585ca478) at ../../../src/include/executor/executor.h:273
#12 0x000055d8577e3cf0 in ExecutePlan (estate=0x55d8585ca248, planstate=0x55d8585ca478, use_parallel_mode=false, 
    operation=CMD_SELECT, sendTuples=true, numberTuples=0, direction=ForwardScanDirection, dest=0x55d85899c1f0, 
    execute_once=true) at execMain.c:1670
--Type <RET> for more, q to quit, c to continue without paging--
#13 0x000055d8577e1957 in standard_ExecutorRun (queryDesc=0x55d8589949c8, direction=ForwardScanDirection, count=0, 
    execute_once=true) at execMain.c:365
#14 0x000055d8577e17de in ExecutorRun (queryDesc=0x55d8589949c8, direction=ForwardScanDirection, count=0, 
    execute_once=true) at execMain.c:309
#15 0x000055d857a69ce0 in PortalRunSelect (portal=0x55d8585758c8, forward=true, count=0, dest=0x55d85899c1f0)
    at pquery.c:924
#16 0x000055d857a69942 in PortalRun (portal=0x55d8585758c8, count=9223372036854775807, isTopLevel=true, 
    run_once=true, dest=0x55d85899c1f0, altdest=0x55d85899c1f0, qc=0x7ffd0c310ea0) at pquery.c:768
#17 0x000055d857a62d1b in exec_simple_query (
    query_string=0x55d8584f5ea8 "SELECT * FROM t As a1 JOIN t As a2 ON ST_Intersects(a1.geom, a2.geom);")
    at postgres.c:1273
#18 0x000055d857a67a2b in PostgresMain (dbname=0x55d85852f868 "postgres", username=0x55d85852f850 "postgres")
    at postgres.c:4657
#19 0x000055d8579a003f in BackendRun (port=0x55d8585223a0) at postmaster.c:4423
#20 0x000055d85799f684 in BackendStartup (port=0x55d8585223a0) at postmaster.c:4108
#21 0x000055d85799c00d in ServerLoop () at postmaster.c:1767
#22 0x000055d85799b90f in PostmasterMain (argc=3, argv=0x55d8584ef7a0) at postmaster.c:1466
#23 0x000055d85786019b in main (argc=3, argv=0x55d8584ef7a0) at main.c:198

Change History (1)

comment:1 by Wenjing, 13 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.