ST_GeomFromGeoJSON () Gây ra hậu quả


7

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?


1
Nếu nó có thể tái tạo, hãy thử lấy một backtrace. wiki.postgresql.org/wiki/ . Ngoài ra, nếu có thể hãy cố gắng giảm truy vấn xuống mức nhỏ nhất vẫn gây ra lỗi.
Craig Ringer

1
Sự cố là tái sản xuất; và cơ sở phá vỡ quá trình là ST_GeomFromGeoJSONchức năng. Tôi đã thêm kết quả của gdb vào thời điểm xảy ra sự cố.
stUrb

1
Bạn nên gửi báo cáo lỗi tới trac.osgeo.org/postgis/newticket
Josh Kupershmidt

1
Al đã sẵn sàng :) trac.osgeo.org/postgis/ticket/3002
stUrb

Câu trả lời:


1

Từ vé osgeo

Nguyên nhân vấn đề sự cố của chúng tôi là phiên bản thư viện không khớp. Hệ thống xây dựng đã sử dụng 0.9, nhưng tôi đã triển khai trên hệ thống với 0.11. Các gói RPM chỉ khai báo yêu cầu của chúng là "json-c" mà không có bất kỳ tính đặc hiệu nào của phiên bản. Rõ ràng json không tương thích nhị phân chuyển tiếp, vì vậy các nhà đóng gói hãy cẩn thận: bạn phải chốt phiên bản json-c của mình trong các khai báo phụ thuộc gói của bạn.

theo dõi bởi

Resolution set to invalid
Status changed from new to closed
Closing because this is a build problem.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.