[postgis-users] Server Crash on Invalid 3d Polygon

Brad Hecox brad at pauds.com
Fri Nov 20 11:31:20 PST 2009


I am having a problem were I get a server crash any time I try to validate or generate a geometry on an invalid 3D polygon.  I have a set of polygons in EWKT format that I need to validate and convert to geometries if valid.  In most cases the st_isvalid function returns a true or false, however of the polygon is 3D and is invalid rather than returning a false, the system crashes.  I have been able to reproduce this on Solaris x86, Solaris SPARC and Max OSX.  We are running PostgreSQL 8.4.1 with PostGIS 1.4.0.  The following is the pstack from the core dump:

ore 'core' of 4774:    /opt/postgres/pgserver/8.4.1/bin/postgres
 fef68610 strncat  (4d8e38, 0, 40923bff, 28, 0, 0) + 20
 fedd3360 pg_parser_errhint (ffbfd9e8, 4d8e38, 7, fee02a08, fee026d0, fee34224) + 24
 fedd9c74 LWGEOM_in (ffbfda70, 5167bc, d3280f32, 406000, 0, 3) + 70
 002a0ef4 InputFunctionCall (ffbfdce8, 4d8e38, 4010, ffffffff, 516688, 4010) + 58
 002a1120 OidInputFunctionCall (4012, 4d8e38, 4010, ffffffff, 0, 445000) + 20
 000e43e8 coerce_type (4d9150, 4d90b0, 2c1, 4010, ffffffff, 0) + 3d4
 000da760 make_fn_arguments (4d8d60, 4d90d8, ffbfdef0, 4d9118, 0, 0) + 5c
 000db534 ParseFuncOrColumn (4d8d60, 4d8e20, 4d90e8, 2, 0, 0) + 3d8
 000d7d00 transformExpr (0, 4d8f00, 4d9020, 31, 1518, 4da538) + 150
 000e6cb8 transformTargetEntry (4d8d60, 4d8f00, 0, 0, 0, 2b65c4) + 80
 000e6d0c transformTargetList (0, 4d8f50, 398ea0, fee62a00, 1e70, 0) + 44
 000bc6a4 transformStmt (4d9028, 4d8f78, 0, 11ab4, 529f2c, 529f2c) + e0
 000bed78 parse_analyze (4d8f78, 4d8550, 0, 0, 41e400, 529f00) + 20
 001e8664 pg_analyze_and_rewrite (4d8f78, 4d8550, 0, 0, 4627d0, 462748) + 24
 001ea244 PostgresMain (2, 4627d0, 4d9000, 0, 0, 1000000) + 14bc
 001bc2f0 ServerLoop (47d0c8, ffbff278, 38e800, 4b06afa6, 41d400, 3ccc00) + 9e8
 001be9ec PostmasterMain (0, 45c180, 3cd800, 461698, 45a400, 3ccc00) + 11c0
 00164550 main     (1, 45c180, ffbff8fc, 459bac, fee60100, fee60140) + 39c
 0004ace4 _start   (0, 0, 0, 0, 0, 0) + 5c

I am able to reproduce the crash consistently with a query such as the following:

select st_isvalid('POLYGON ((-97.78351581 36.37358796 1167.172,-97.78303556 36.37319923 1167.172,-98.88351581 38.37358796 1167.172))');

Any help would be greatly appreciated!!

Brad




More information about the postgis-users mailing list