[pgsql-jp: 29094] バックエンドが array_dims 関数の不正使用でダウン

kinoshitawataru kinoshitawataru @ mail.goo.ne.jp
2003年 2月 18日 (火) 11:20:48 JST


木下と申します。
(Windows2000 cygwin-postgreSQL7.2.1)

配列長を取得する関数 array_dims を使用するテスト中、
「もし、配列項目でない項目を使用したら」
ということで、以下のテストをしました。

select array_dims(usename) from pg_shadow;

すると、以下のメッセージを吐いてバックエンドがダウンして
しまいました。

DEBUG:  server process (pid 1764) was terminated by signal 11
DEBUG:  terminating any other active server processes
DEBUG:  immediate shutdown request
DEBUG:  all server processes terminated; reinitializing shared memory and semaphores
IpcMemoryCreate: shmget(key=5432001, size=1441792, 03600) failed: Not enough core

This error usually means that PostgreSQL\'s request for a shared
memory segment exceeded available memory or swap space.
To reduce the request size (currently 1441792 bytes), reduce
PostgreSQL\'s shared_buffers parameter (currently 64) and/or
its max_connections parameter (currently 32).

The PostgreSQL Administrator\'s Guide contains more information about
shared memory configuration.

各種パラメータを調整せよとの事と読めますが、バックエンドは
こんなに簡単に落ちてしまうのかとびっくりしました。

不正なSQLを発行したのは確かなのですが、(例えば)運用中の
DBの内容を確認中に誤って当テストのようなSQLを発行した場合、
バックエンドが落ちてしまうのはちょっと怖いなと思いました。

ほかにもこのようなケースはあるかと思いますが、このケース
では、「配列でない項目への array_dims は無効です」のよう
なエラーとして、バックエンドが落ちないようにすべきだと私
は思うのですが、どうでしょうか。




pgsql-jp メーリングリストの案内