[postgis-tickets] [PostGIS] #3153: garden Crash in ST_3DArea in sfcgal

PostGIS trac at osgeo.org
Tue Jun 9 19:10:22 PDT 2015


#3153: garden Crash in ST_3DArea in sfcgal
----------------------+---------------------------
  Reporter:  robe     |      Owner:  colivier
      Type:  defect   |     Status:  new
  Priority:  blocker  |  Milestone:  PostGIS 2.2.0
 Component:  sfcgal   |    Version:  trunk
Resolution:           |   Keywords:
----------------------+---------------------------
Description changed by robe:

Old description:

> I'm guessing this function doesn't use proj or gdal in any way, so the
> crash should have nothing to do with the fact I'm running GDAL 2.0.0 and
> proj 4.9.1.  I notice it's crashing in sfcgal, so probably has to do with
> fact I was doing postgis garden including CREATE EXTENSION
> postgis_sfcgal;
>

> {{{ -- crashes
> SELECT ST_3DArea(ST_GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 2,10 0
> 1,10 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2)))') );
>
> -- works fine
> SELECT ST_3Area(ST_GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 2,10 0
> 1,10 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2)))') );
>
> SELECT postgis_full_version() || ' ' || version();
>
> POSTGIS="2.2.0dev r13629" GEOS="3.5.0dev-CAPI-1.9.0 r4057" SFCGAL="1.0.5"
> PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.0, released 2015/06/05"
> LIBXML="2.7.8" LIBJSON="0.12" RASTER PostgreSQL 9.4.1, compiled by Visual
> C++ build 1800, 64-bit
>
> }}}
>
> -- backtrace looks like:
>
> {{{
> #0  0x000007fefd30aaad in RaiseException () from
> C:\Windows\system32\KernelBase.dll
> #1  0x000000006144cce6 in libgcc_s_seh-1!_Unwind_RaiseException () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libgcc_s_seh-1.dll
> #2  0x000000006fcb5dc2 in libstdc++-6!.cxa_throw () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libstdc++-6.dll
> #3  0x000000006d47013a in
> libSFCGAL!_ZN5boost13serialization9singletonISt8multisetIPKNS0_18extended_type_infoENS0_6detail11key_compareESaIS5_EEE20get_mutable_instanceEv
> () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
> #4  0x000000006d4728b0 in
> libSFCGAL!_ZN5boost13serialization9singletonISt8multisetIPKNS0_18extended_type_infoENS0_6detail11key_compareESaIS5_EEE20get_mutable_instanceEv
> () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
> #5  0x000000006d244832 in
> libSFCGAL!_ZN6SFCGAL9algorithm6area3DERKNS_8GeometryE () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
> #6  0x000000006d297a6f in sfcgal_geometry_area_3d () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
> #7  0x00000000708916f9 in sfcgal_area3D () from
> C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\lib\postgis-2.2.dll
> #8  0x00000001401118e8 in postgres!ExecProject ()
> }}}
>

> What I find especially troubling about this is that even when I do:
>

> {{{
> set postgis.backend = geos;
> }}}
>

> It still goes thru SFCGAL.  It's my understanding that functions written
> in both, the geos/liblwgeom one should be used if geos is backend.

New description:

 I'm guessing this function doesn't use proj or gdal in any way, so the
 crash should have nothing to do with the fact I'm running GDAL 2.0.0 and
 proj 4.9.1.  I notice it's crashing in sfcgal, so probably has to do with
 fact I was doing postgis garden including CREATE EXTENSION postgis_sfcgal;


 {{{
 -- crashes
 SELECT ST_3DArea(ST_GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 2,10 0
 1,10 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2)))') );

 -- works fine
 SELECT ST_3Area(ST_GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 2,10 0 1,10
 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2)))') );

 SELECT postgis_full_version() || ' ' || version();

 POSTGIS="2.2.0dev r13629" GEOS="3.5.0dev-CAPI-1.9.0 r4057" SFCGAL="1.0.5"
 PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.0, released 2015/06/05"
 LIBXML="2.7.8" LIBJSON="0.12" RASTER PostgreSQL 9.4.1, compiled by Visual
 C++ build 1800, 64-bit

 }}}

 -- backtrace looks like:

 {{{
 #0  0x000007fefd30aaad in RaiseException () from
 C:\Windows\system32\KernelBase.dll
 #1  0x000000006144cce6 in libgcc_s_seh-1!_Unwind_RaiseException () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libgcc_s_seh-1.dll
 #2  0x000000006fcb5dc2 in libstdc++-6!.cxa_throw () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libstdc++-6.dll
 #3  0x000000006d47013a in
 libSFCGAL!_ZN5boost13serialization9singletonISt8multisetIPKNS0_18extended_type_infoENS0_6detail11key_compareESaIS5_EEE20get_mutable_instanceEv
 () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
 #4  0x000000006d4728b0 in
 libSFCGAL!_ZN5boost13serialization9singletonISt8multisetIPKNS0_18extended_type_infoENS0_6detail11key_compareESaIS5_EEE20get_mutable_instanceEv
 () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
 #5  0x000000006d244832 in
 libSFCGAL!_ZN6SFCGAL9algorithm6area3DERKNS_8GeometryE () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
 #6  0x000000006d297a6f in sfcgal_geometry_area_3d () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\bin\libSFCGAL.dll
 #7  0x00000000708916f9 in sfcgal_area3D () from
 C:\ming64gcc48\projects\postgresql\rel\pg9.4w64gcc48edb\lib\postgis-2.2.dll
 #8  0x00000001401118e8 in postgres!ExecProject ()
 }}}


 What I find especially troubling about this is that even when I do:


 {{{
 set postgis.backend = geos;
 }}}


 It still goes thru SFCGAL.  It's my understanding that functions written
 in both, the geos/liblwgeom one should be used if geos is backend.

 I should add, its not specific to the M I used.  If I switch the M's to
 Z's it crashes there too.

--

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