Crash when inserting gist records, or creating index on ( int, geom ) - Mailing list pgsql-hackers

From Robin Chauhan
Subject Crash when inserting gist records, or creating index on ( int, geom )
Date
Msg-id 81e6e44905020120565ada0cb@mail.gmail.com
Whole thread Raw
Responses Re: Crash when inserting gist records, or creating index on ( int, geom )
Re: Crash when inserting gist records, or creating index
List pgsql-hackers
I tried asking on postgis-users@postgis.refractions.net, and Mark
Cave-Ayland suggested
I ask you folks.

I installed PostGIS, which appeared to work just fine.  The I
installed contrib/btree_gist, and since then I've had issues.

Some background:  My postgres setup is on Red Hat linux, installed
from RPMs.  It is a shared hosting environment, and postgres source
was not installed.  So to build PostGIS , I checked the version
number,  and downloaded the corresponding source.

cp_test=# select version();                             version
---------------------------------------------------------------------
PostgreSQL 7.3.2 on i686-pc-linux-gnu, compiled by GCC egcs-2.91.66
(1 row)

I installed PostGIS 0.91:

cp_test=# select postgis_version();          postgis_version
---------------------------------------
0.9 USE_GEOS=0 USE_PROJ=0 USE_STATS=1

I ran postgis.sql without a problem.  I also installed
contrib/btree_gist but I get a crash when creating a gist index:

cp_test=# create index trp_pool_index2 on trips using gist (
trp_matchpool, trp_org_geom gist_geometry_ops );
server closed the connection unexpectedly       This probably means the server terminated abnormally       before or
whileprocessing the request.
 
The connection to the server was lost. Attempting reset: Failed.


Also, there is now another way to crash it: the first update query
works, the second causes a crash:

cp_test=#  Update trips set trp_org_geom=GeomFromText( 'POINT ('
||trp_org_lat||' '||trp_org_long ||')'::text , -1 ) where
tripid=355038;
UPDATE 1

cp_test=#  Update trips set trp_org_geom=GeomFromText( 'POINT ('
||trp_org_lat||' '||trp_org_long ||')'::text , -1 ) where
tripid=355034;
server closed the connection unexpectedly       This probably means the server terminated abnormally       before or
whileprocessing the request.
 
The connection to the server was lost. Attempting reset: Failed.
!# 

Note the record that causes the crash has currently an empty
trp_org_geom, the other does not:

cp_test=# select
tripid,trp_matchpool,trp_org_lat,trp_org_long,trp_org_geom,trp_dest_geom
from trips where tripid in (355038,355034);tripid | trp_matchpool | trp_org_lat | trp_org_long |           
trp_org_geom            |            trp_dest_geom

--------+---------------+-------------+--------------+------------------------------------+-------------------------------------355038
|           -1 |    43.55059 |   -80.232725 |
 
SRID=-1;POINT(43.55059 -80.232725) | SRID=-1;POINT(43.769255
-79.409203)355034 |          -104 |   46.977101 |   -70.552437 |                                  |
(2 rows)


My trips table is as follows:
                                      Table "public.trips"     Column      |            Type             |
      Modifiers
 
------------------+-----------------------------+----------------------------------------------------tripid           |
integer                    | not null default
 
nextval('trips_tripid_seq'::text)...trp_matchpool    | integer                     | not null default
'-1'...trp_org_lat     | double precision            | not null default '0'trp_org_long     | double precision
 | not null default '0'trp_dest_lat     | double precision            | not null default '0'trp_dest_long    | double
precision           | not null default '0'
 
...trp_org_geom     | geometry                    |trp_dest_geom    | geometry                    |
...
Indexes: trips_pkey primary key btree (tripid),        personid_trips_index btree (personid),        trp_loc_index gist
(trp_org_geom,trp_dest_geom),        trp_org_index gist (trp_org_geom)
 
Check constraints: "enforce_srid_trp_org_geom" (srid(trp_org_geom) = -1)
"enforce_geotype_trp_org_geom"
((geometrytype(trp_org_geom) = 'POINT'::text) OR (trp_org_geom IS
NULL))                  "enforce_srid_trp_dest_geom" (srid(trp_dest_geom) = -1)
"enforce_geotype_trp_dest_geom"
((geometrytype(trp_dest_geom) = 'POINT'::text) OR (trp_dest_geom IS
NULL))


Here is the bt from gdb:


(gdb) symbol-file /usr/bin/postgres
Reading symbols from /usr/bin/postgres...done.

(gdb) attach 13220
Attaching to Pid 13220
0x2ac26b22 in ?? ()

(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x8082f0f in rt_box_union ()
(gdb) bt
#0  0x8082f0f in rt_box_union ()
#1  0x815fe3f in DirectFunctionCall2 ()
#2  0x2ae553af in ?? ()
#3  0x81604b5 in FunctionCall3 ()
#4  0x8071b7c in gistpenalty ()
#5  0x807112f in gistchoose ()
#6  0x806e574 in gistlayerinsert ()
#7  0x806e4c6 in gistdoinsert ()
#8  0x806e3d6 in gistinsert ()
#9  0x8160d7c in OidFunctionCall6 ()
#10 0x807b4d1 in index_insert ()
#11 0x80cfe5d in ExecInsertIndexTuples ()
#12 0x80cc6fc in ExecUpdate ()
#13 0x80cc2c3 in ExecutePlan ()
#14 0x80cb82d in ExecutorRun ()
#15 0x81175b2 in ProcessQuery ()
#16 0x8115c67 in pg_exec_query_string ()
#17 0x8116c09 in PostgresMain ()
#18 0x80ff013 in DoBackend ()
#19 0x80fe8b3 in BackendStartup ()
#20 0x80fdb7d in ServerLoop ()
#21 0x80fd750 in PostmasterMain ()
#22 0x80dd93e in main ()
#23 0x2ab8c9cb in ?? ()
(gdb)

Would you have any advice for me?

Many thanks,
-Robin Chauhan


pgsql-hackers by date:

Previous
From: Martin Pitt
Date:
Subject: Re: libpq API incompatibility between 7.4 and 8.0
Next
From: John Hansen
Date:
Subject: Re: unicode upper/lower functions