[postgis-devel] different EWKB representations on different machines?

Alex Mayrhofer axelm-postgis at nona.net
Wed Nov 9 15:59:35 PST 2005


All,

i'm currently investigating severe problems with PostGIS (postmaster 
crashes, bus errors, etc) which only seem to occur on the sparc architecture 
[i'm suspecting some alignment errors]. During tests, i found out that the 
same geometry on three different machines/architectures, two with PostGIS 
1.0.0, one with 1.0.0RC1, yields three different EWKB formats.

Question: Shouldn't the EWKB representations be equal on all three machines?

details follow:
----
box #1 (Debian sarge, PowerPC):

testdb=# select asewkb(geomfromewkt('SRID=-1;POINT(1 1)'));
                                      asewkb
--------------------------------------------------------------------------------
  \377\001\000\000\000\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?
(1 row)

testdb=# select version();
                                                      version 

------------------------------------------------------------------------------------------------------------------
  PostgreSQL 7.4.7 on powerpc-unknown-linux-gnu, compiled by GCC 
powerpc-linux-gcc (GCC) 3.3.5 (Debian 1:3.3.5-12)
(1 row)

testdb=# select postgis_full_version();
                                     postgis_full_version 

--------------------------------------------------------------------------------------------
  POSTGIS="1.0.0RC1" PROJ="Rel. 4.4.9, 29 Oct 2004" USE_STATS DBPROC="0.1.0" 
RELPROC="0.1.0"
(1 row)

------
box #2 (intel i386, Debian sarge)

testdb=# select asewkb(geomfromewkt('SRID=-1;POINT(1 1)'));
                                      asewkb
--------------------------------------------------------------------------------
  \001\001\000\000\000\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?
(1 row)

testdb=# select version();
                                           version 

-------------------------------------------------------------------------------------------
  PostgreSQL 8.1.0 on i386-pc-linux-gnu, compiled by GCC cc (GCC) 3.3.5 
(Debian 1:3.3.5-12)
(1 row)

testdb=# select postgis_full_version();
                                     postgis_full_version 

--------------------------------------------------------------------------------------------
  POSTGIS="1.0.4" GEOS="2.1.3" PROJ="Rel. 4.4.9, 29 Oct 2004" DBPROC="0.3.0" 
RELPROC="0.3.0"
(1 row)

testdb=#

----
Box #3 (Ultrasparc, Debian sarge, userland in 32bit)

testdb=# select asewkb(geomfromewkt('SRID=-1;POINT(1 1)'));
                                      asewkb
--------------------------------------------------------------------------------
  \000\000\000\000\001?\360\000\000\000\000\000\000?\360\000\000\000\000\000\000
(1 row)

testdb=# select version();
                                               version 

----------------------------------------------------------------------------------------------------
  PostgreSQL 8.1beta2 on sparc-unknown-linux-gnu, compiled by GCC cc (GCC) 
3.3.5 (Debian 1:3.3.5-13)
(1 row)

testdb=# select postgis_full_version();
                                     postgis_full_version 

--------------------------------------------------------------------------------------------
  POSTGIS="1.0.4" GEOS="2.1.3" PROJ="Rel. 4.4.9, 29 Oct 2004" DBPROC="0.3.0" 
RELPROC="0.3.0"
(1 row)


The "real problem" is that a great percentage of postgis related operations 
on the Ultrasparc machine either yield weird error messages, or leads to a 
bus error of the postmaster. I'm currently recompiling PostgreSQL with 
--enable-cassert, but since Postgres regression went fine, i'd suspect the 
problem to be somewhere  in the postgis code. More news as we get it.

any comments on this?

cheers

alex