Ich stoße auf ein seltsames Problem, das ich nicht lösen kann. Der Server stürzt ab, wenn einige Postgis-bezogene Abfragen ausgeführt werden. Nach einigem Debuggen anhand der von postgis bereitgestellten Beispiele scheint die Funktion den Server zum Absturz zu bringen.ST_GEOMFROMGeoJSON()
Stürzt ab:
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;
Funktioniert normal:
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))',2249)
,4326)
) As wgs_geom;
Wenn ich in das Protokoll schaue, finde ich diese Einträge im Zusammenhang mit dem Absturz:
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
Das Durchsuchen des Webs ergab keine Lösung. Vielleicht suche ich nicht nach dem richtigen Problem?
Ich habe versucht, den Server neu zu starten, da das Dateisystem möglicherweise einige Fehler aufweist, ohne Ergebnisse. Der Server selbst ist eine Ubuntu 12.04-Maschine als VPS. Der Postgresql-Server ist 9.3.5 und Postgis 2.1.4
Update
Wie Craig Ringer vorgeschlagen hat, habe ich gdb verwendet, um zu sehen, was passiert, wenn der Prozess abstürzt. Dies ist die erste Ausgabe:
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.
Auch dies ist die Ausgabe von 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
Habe ich Recht zu sagen, dass etwas nicht stimmt vfprintf.c
? zB existiert es nicht?
Es heißt LIBJSON = "UNBEKANNT" könnte das von Einfluss sein?
ST_GeomFromGeoJSON
Funktion. Ich habe die Ergebnisse von gdb im Moment des Absturzes hinzugefügt.