Estou enfrentando um problema estranho que não consigo resolver. O servidor trava ao executar algumas consultas relacionadas ao postgis. Após alguma depuração, usando os exemplos fornecidos pelo postgis, parece que a ST_GEOMFROMGeoJSON()
função faz com que o servidor trave.
Falhas:
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;
Funciona normalmente:
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))',2249)
,4326)
) As wgs_geom;
Ao olhar para o log, encontro estas entradas relacionadas ao travamento:
2014-11-21 11:27:46 CET LOG: server process (PID 2377) was terminated by signal 11: Segmentation fault
2014-11-21 11:27:46 CET DETAIL: Failed process was running: SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;
2014-11-21 11:27:46 CET LOG: terminating any other active server processes
2014-11-21 11:27:46 CET WARNING: terminating connection because of crash of another server process
2014-11-21 11:27:46 CET DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2014-11-21 11:27:46 CET HINT: In a moment you should be able to reconnect to the database and repeat your command.
2014-11-21 11:27:46 CET LOG: all server processes terminated; reinitializing
2014-11-21 11:27:46 CET LOG: database system was interrupted; last known up at 2014-11-21 11:24:11 CET
2014-11-21 11:27:46 CET LOG: database system was not properly shut down; automatic recovery in progress
2014-11-21 11:27:46 CET LOG: record with zero length at 18/34BCAD4
2014-11-21 11:27:46 CET LOG: redo is not required
2014-11-21 11:27:46 CET LOG: database system is ready to accept connections
2014-11-21 11:27:46 CET LOG: autovacuum launcher started
A pesquisa na web não rendeu uma solução. Talvez eu não esteja procurando o problema certo?
Tentei reiniciar o servidor porque talvez o sistema de arquivos tenha algumas falhas, sem resultados. O servidor em si é uma máquina Ubuntu 12.04 como VPS. O servidor postgresql é 9.3.5 e Postgis 2.1.4
Atualização
Como Craig Ringer sugeriu, usei o gdb para ver o que acontece quando o processo falha. Esta é a primeira saída:
Program received signal SIGSEGV, Segmentation fault.
0xb70dda59 in _IO_vfprintf_internal (s=0xbfde7150, format=<optimized out>, ap=0xbfde7298 "") at vfprintf.c:1630
1630 vfprintf.c: No such file or directory.
Também esta é a saída de postgis_full_verion()
:
POSTGIS="2.1.4 r12966" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009"
GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8"
LIBJSON="UNKNOWN" TOPOLOGY RASTER
Estou certo em dizer que algo está errado vfprintf.c
? por exemplo, não existe?
Diz LIBJSON="UNKNOWN" isso poderia influenciar?
Do bilhete osgeo
Seguido por