[postgis-users] Unable to complete checks on Solaris x64

Dechaux Eric CEN (BCQ STIG) eric.dechaux at gendarmerie.interieur.gouv.fr
Mon Jul 22 13:44:52 PDT 2013


Hi,
 
I need to install PostGIS on a Solaris 10 X64 powered system.
I have successfully built and installed a 32 bits version by I am stuck on the 64 bits build.

The configure part goes without trouble :

  PostGIS is now configured for i386-pc-solaris2.10

 -------------- Compiler Info -------------
  C compiler:           gcc -m64 -g -O2 -std=gnu99
  C++ compiler:         g++ -m64 -g -O2
  SQL preprocessor:     /usr/sfw/bin/cpp -traditional-cpp -P

 -------------- Dependencies --------------
  GEOS config:          /opt/stig/idicsi-2.0/bin/amd64/geos-config
  GEOS version:         3.3.8
  GDAL config:          /opt/stig/idicsi-2.0/bin/amd64/gdal-config
  GDAL version:         1.10.0
  PostgreSQL config:    /opt/stig/idicsi-2.0/bin/amd64/pg_config
  PostgreSQL version:   PostgreSQL 9.2.4
  PROJ4 version:        48
  Libxml2 config:       /usr/bin/xml2-config
  Libxml2 version:      2.6.23
  JSON-C support:       yes
  PostGIS debug level:  0
  Perl:                 /usr/bin/perl

 --------------- Extensions ---------------
  PostGIS Raster:       enabled
  PostGIS Topology:     enabled

 -------- Documentation Generation --------
  xsltproc:             /usr/bin/xsltproc
  xsl style sheets:     /usr/share/sgml/docbook/xsl-stylesheets
  dblatex:
  convert:              /usr/sfw/bin/convert
  mathml2.dtd:          http://www.w3.org/Math/DTD/mathml2/mathml2.dtd

As well as the make part :

gmake[2]: Leaving directory `/opt/stig/idicsi-2.0/src/postgis-2.0.3/extensions/postgis_topology'
gmake[1]: Leaving directory `/opt/stig/idicsi-2.0/src/postgis-2.0.3/extensions'
PostGIS was built successfully. Ready to install.


However, the make check fails with two kind of errors during the regress tests :

 PostgreSQL 9.2.4 on i386-pc-solaris2.10, compiled by gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath), 64-bit
 Postgis 2.0.3 - r11128 - 2013-07-22 18:47:57
   GEOS: 3.3.8-CAPI-1.7.8
   PROJ: Rel. 4.8.0, 6 March 2012

Running tests

[...]
 lwgeom_regress .. failed (diff expected obtained: /tmp/pgis_reg/test_27_diff)

[...]
 tickets .. failed (diff expected obtained: /tmp/pgis_reg/test_66_diff)
 typmod .. failed (diff expected obtained: /tmp/pgis_reg/test_67_diff)

[...]
 concave_hull .. failed (diff expected obtained: /tmp/pgis_reg/test_72_diff)
 hausdorff .. failed (diff expected obtained: /tmp/pgis_reg/test_73_diff)

[...]
 sharedpaths .. failed (diff expected obtained: /tmp/pgis_reg/test_78_diff)
 snap .. failed (diff expected obtained: /tmp/pgis_reg/test_79_diff)

[...]
 clean .. failed (diff expected obtained: /tmp/pgis_reg/test_82_diff)
 relate_bnr .. failed (diff expected obtained: /tmp/pgis_reg/test_83_diff)
 in_geojson .. ok
 uninstall .. failed (Count of object before install (4061) != count after uninstall (4064))

Run tests: 85
Failed: 10


Here is the diff for the first failure :

--- lwgeom_regress_expected     Mon Feb 27 23:08:12 2012
+++ /tmp/pgis_reg/test_27_out   Mon Jul 22 20:49:06 2013
@@ -1,5 +1,5 @@
 BOX(0 0.1,11 12)
-BOX3D(0 0.1 -55,11 12 12)
+BOX3D(0 0.1 -0.04,11 12 12)
 11184
 15824
 20464

I really don't understand why the x86 build works OK but not the x64, but I think it is a minor error.


All other failures, on the contrary, crashed the postgresql process. Here is what it shown in the postgresql log file for the tickets checks :

LOG:  processus serveur (PID 669) a été arrêté par le signal 11
DÉTAIL:  Le processus qui a échoué exécutait : SELECT '#168', ST_NPoints(g), ST_AsText(g), ST_isValidReason(g)
        FROM ( VALUES
	('01060000C00100000001030000C00100000003000000E3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFF'::geometry)
        ) AS v(g);
LOG:  arrêt des autres processus serveur actifs
ATTENTION:  arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur
DÉTAIL:  Le postmaster a commandé à ce processus serveur d'annuler la transaction
        courante et de quitter car un autre processus serveur a quitté anormalement
        et qu'il existe probablement de la mémoire partagée corrompue.
ASTUCE :  Dans un moment, vous devriez être capable de vous reconnecter à la base de
        données et de relancer votre commande.
LOG:  tous les processus serveur se sont arrêtés, réinitialisation

Basically the process coredump and postgresql restarts.


As the coredumps keeps overwriting, I can only analyses the last crash :  

LOG:  processus serveur (PID 26050) a été arrêté par le signal 11
DÉTAIL:  Le processus qui a échoué exécutait : SELECT origin,caseno,
               st_equals(st_collectionextract(st_makevalid(orig),1), st_collectionextract(valid,1)) AND
               st_equals(st_collectionextract(st_makevalid(orig),2), st_collectionextract(valid,2)) AND
               st_equals(st_collectionextract(st_makevalid(orig),3), st_collectionextract(valid,3)),
               st_isvalid(st_makevalid(orig)),
               (st_isvaliddetail(orig)).valid
          FROM clean_cases;


-bash-3.2$ file core
core:           ELF 64-bit LSB core file AMD64 Version 1, from 'postgres'


-bash-3.2$ pstack core
core 'core' of 26050:   /opt/stig/idicsi-2.0/bin/amd64/postgres -D /tmp/postgis-2.0.313818
 00000000001b6cad ???????? ()
 fffffd7ffed11f09 _SUNW_Unwind_RaiseException () + 46
 fffffd7ffb7dc79e __cxa_throw () + 5e
 fffffd7ffb923ea1 _ZN4geos4geom10LinearRing20validateConstructionEv () + 161
 fffffd7ffb9247ea _ZN4geos4geom10LinearRingC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE () + 6a
 fffffd7ffb920115 _ZNK4geos4geom15GeometryFactory16createLinearRingEPNS0_18CoordinateSequenceE () + 35
 fffffd7ffe6861d2 GEOSGeom_createLinearRing_r () + 22
 fffffd7ffe7338a3 LWGEOM2GEOS () + 1b3
 fffffd7ffe734fb8 lwgeom_make_valid () + 48
 fffffd7ffe6f2c68 ST_MakeValid () + 68
 00000000005ff6cf ExecMakeFunctionResultNoSets () + bf
 00000000005ff67f ExecMakeFunctionResultNoSets () + 6f
 00000000005ff67f ExecMakeFunctionResultNoSets () + 6f
 0000000000600563 ExecEvalAnd () + 53
 0000000000603ae9 ExecProject () + 159
 0000000000603e4c ExecScan () + 10c
 00000000005fd01d ExecProcNode () + 27d
 00000000005fb979 standard_ExecutorRun () + a9
 00000000006ce674 PortalRunSelect () + 94
 00000000006cf018 PortalRun () + 2a8
 00000000006cc193 exec_simple_query () + 273
 00000000006cd3a4 PostgresMain () + 994
 000000000068c4ec ServerLoop () + 90c
 000000000068e2dc PostmasterMain () + 63c
 000000000062d578 main () + 508
 00000000004dfcbc _start () + 6c

-bash-3.2$ mdb core
Loading modules: [ ld.so.1 libc.so.1 libuutil.so.1 ]
> ::stack
0x1b6cad()
libc.so.1`_SUNW_Unwind_RaiseException+0x46()
libstdc++.so.6.0.3`__cxa_throw+0x5e()
libgeos-3.3.8.so`_ZN4geos4geom10LinearRing20validateConstructionEv+0x161()
libgeos-3.3.8.so`_ZN4geos4geom10LinearRingC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE+0x6a()
libgeos-3.3.8.so`_ZNK4geos4geom15GeometryFactory16createLinearRingEPNS0_18CoordinateSequenceE+0x35()
libgeos_c.so.1.7.8`GEOSGeom_createLinearRing_r+0x22()
postgis-2.0.so`LWGEOM2GEOS+0x1b3()
postgis-2.0.so`lwgeom_make_valid+0x48()
postgis-2.0.so`ST_MakeValid+0x68()
ExecMakeFunctionResultNoSets+0xbf()
ExecMakeFunctionResultNoSets+0x6f()
ExecMakeFunctionResultNoSets+0x6f()
ExecEvalAnd+0x53()
ExecProject+0x159()
ExecScan+0x10c()
ExecProcNode+0x27d()
standard_ExecutorRun+0xa9()
PortalRunSelect+0x94()
PortalRun+0x2a8()
exec_simple_query+0x273()
PostgresMain+0x994()
ServerLoop+0x90c()
PostmasterMain+0x63c()
main+0x508()
_start+0x6c()
 

If I understand well, the crash occurs inside GEOS, in the LinearRing constructor, inside the validateConstruction method.

Has somebody seen this king of crash ? Can it comes from my GEOS build ?


Best regards
--
Eric DECHAUX
-------------- next part --------------
Ce message électronique et tous les fichiers attachés qu'il contient sont confidentiels et destinés exclusivement à l'usage de la personne à laquelle ils sont adressés. Si vous avez reçu ce message par erreur, merci de le retourner à son émetteur. La publication, l'usage, la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits.

En cas d'urgence, composez le 17 ou le 112.
Afin de contribuer au respect de l'environnement, merci de n'imprimer cet e-mail qu'en cas de necessite.

This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual to whom it is addressed. If you have received this email in error please send it back to the person that sent it to you. Unauthorized publication, use, dissemination, forwarding, printing or copying of this email and its associated attachments is strictly prohibited.

In case of emergency, dial number 17 or 112.
To contribute to the environmental protection, please print this e-mail only if necessary. 


More information about the postgis-users mailing list