[postgis-devel] [PostGIS] #1697: Crash in GiST index with empty MultiPolygons

PostGIS trac at osgeo.org
Tue Mar 20 19:46:19 PDT 2012


#1697: Crash in GiST index with empty MultiPolygons
---------------------------+------------------------------------------------
 Reporter:  realityexists  |       Owner:  pramsey      
     Type:  defect         |      Status:  new          
 Priority:  critical       |   Milestone:  PostGIS 2.0.0
Component:  postgis        |     Version:  trunk        
 Keywords:                 |  
---------------------------+------------------------------------------------
 2.0.0 rev 9517, 32-bit, PostgreSQL 9.1.3

 I have a table with a geography(MultiPolygon) column and a GiST index on
 that column. For each new row my application initially inserts
 'MULTIPOLYGON EMPTY' into that column, then updates it to the real (non-
 empty) value. After some number of successful inserts any further inserts
 crash with the attached stack trace. If I insert a different dummy polygon
 (not empty) everything works fine.

 I wasn't able to create a simple repro for this, so I suspect it takes
 some amount of data for the index to get into a bad state. The stack trace
 is from Linux, but this also happens on Windows (beta 3 binaries).

 The client gets messages like this when trying to insert another value
 (once a crash has occurred):

 {{{
 NOTICE:  [geography_inout.c:gserialized_geography_from_lwgeom:117] typmod
 was -1
 LINE 22: ...(E'SA')), ((E'FL')), ((245)), ((E'MULTIPOL...
                                                               ^
 NOTICE:  [gserialized_typmod.c:postgis_valid_typmod:115] Entered function
 NOTICE:  [gserialized_typmod.c:postgis_valid_typmod:120] Got geom(type =
 6, srid = 4326, hasz = 0, hasm = 0)
 NOTICE:  [gserialized_typmod.c:postgis_valid_typmod:121] Got typmod(type =
 6, srid = 4326, hasz = 0, hasm = 0)
 NOTICE:  [gserialized_gist_nd.c:gserialized_gist_compress:488] [GIST]
 'compress' function called
 NOTICE:  [gserialized_gist_nd.c:gserialized_gist_compress:500] [GIST]
 processing leafkey input
 NOTICE:  [gserialized_gist.c:gserialized_datum_get_gidx_p:241] entered
 function
 NOTICE:  [gserialized_gist.c:gserialized_datum_get_gidx_p:250] got flags 8
 NOTICE:  [gserialized_gist.c:gserialized_datum_get_gidx_p:270] could not
 calculate bbox, returning failure
 NOTICE:  [gserialized_gist_nd.c:gserialized_gist_compress:522] [GIST]
 empty geometry!
 NOTICE:  [gserialized_gist_nd.c:gserialized_gist_picksplit:1016] [GIST]
 'picksplit' function called
 ********** Error **********
 }}}

-- 
Ticket URL: <http://trac.osgeo.org/postgis/ticket/1697>
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-devel mailing list