Tôi đang gặp phải một vấn đề kỳ lạ mà tôi không thể giải quyết. Máy chủ gặp sự cố khi thực hiện một số truy vấn liên quan đến postgis. Sau một số gỡ lỗi, sử dụng các ví dụ được cung cấp bởi postgis, nó xuất hiện ST_GEOMFROMGeoJSON()
chức năng khiến máy chủ gặp sự cố.
Tai nạn:
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;
Hoạt động bình thường:
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))',2249)
,4326)
) As wgs_geom;
Khi nhìn vào nhật ký tôi thấy những mục này liên quan đến sự cố:
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
Tìm kiếm trên web không mang lại một giải pháp. Có lẽ tôi không tìm kiếm đúng vấn đề?
Tôi đã cố gắng khởi động lại máy chủ vì có thể hệ thống tập tin có một số lỗi, không có kết quả. Bản thân máy chủ là một máy Ubuntu 12.04 dưới dạng VPS. Máy chủ postgresql là 9.3.5 và Postgis 2.1.4
Cập nhật
Như Craig Ringer đề nghị tôi đã sử dụng gdb để xem điều gì xảy ra khi quá trình gặp sự cố. Đây là đầu ra đầu tiên:
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.
Ngoài ra đây là đầu ra của 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
Tôi có đúng không khi nói có gì đó không ổn vfprintf.c
? vd: nó không tồn tại?
Nó nói LIBJSON = "UNKNOWN" có thể có ảnh hưởng?
ST_GeomFromGeoJSON
chức năng. Tôi đã thêm kết quả của gdb vào thời điểm xảy ra sự cố.