web-dev-qa-db-ja.com

ST_GeomFromGeoJSON()postgresをクラッシュさせます

解決できない奇妙な問題が発生しています。一部のpostgis関連のクエリを実行すると、サーバーがクラッシュします。いくつかのデバッグの後、 examplesprovided をpostgisで使用すると、ST_GEOMFROMGeoJSON()関数が原因でサーバーがクラッシュするようです。

クラッシュ:

_SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;
_

正常に動作します:

_SELECT ST_AsText(
         ST_Transform(
               ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
                                         743265 2967450,743265.625 2967416,743238 2967416))',2249)
         ,4326)
        ) As wgs_geom; 
_

ログを調べたところ、クラッシュに関連する次のエントリが見つかりました。

_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
_

Webを検索しても解決策にはなりませんでした。多分私は正しい問題を探していませんか?

ファイルシステムにいくつかの障害があり、結果が得られなかったため、サーバーを再起動しようとしました。サーバー自体はVPSとしてのUbuntu 12.04マシンです。 postgresqlサーバーは9.3.5およびPostgis 2.1.4です。

更新
Craig Ringerが提案したように、gdbを使用して、プロセスがクラッシュしたときに何が起こるかを確認しました。これは最初の出力です:

_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.
_

また、これは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
_

_vfprintf.c_に問題があると言ってもいいですか?例えばそれは存在しませんか?

LIBJSON = "UNKNOWN"が影響しているのでしょうか?

7
stUrb

osgeo ticket から

私たちのourクラッシュの根本的な原因は、ライブラリのバージョンの不一致でした。ビルドシステムは0.9を使用していましたが、0.11のシステムにデプロイしていました。 RPMパッケージは、要件を「json-c」として宣言しているだけで、バージョンの詳細はありません。どうやらjsonは前方バイナリ互換ではないので、パッケージャーは注意してください:json-cバージョンをパッケージの依存関係宣言にペグする必要があります

に続く

Resolution set to invalid
Status changed from new to closed
Closing because this is a build problem.
1
Evan Carroll