代表的なシステムコールのエラー番号に対する原因と対策を表7-5に示します。表7-5にないエラーについては,使用しているOSのマニュアルを参照してください。
ここでは,主なシステムコールについてだけ記述しています。さらに,詳細に調べる場合は,メッセージで表示されたシステムコールのエラー番号の値に該当するニモニックを,使用しているOSのerrno定義ファイルで調べてください。そして,該当するニモニックのエラーが返った原因を,OSのマニュアルで特定してください。
表7-5 システムコールのエラー番号に対する原因と対策
システムコール | errno | ニモニック | 考えられる主な原因 | 対策 |
---|---|---|---|---|
dlopen | 2 | ENOENT | DABrokerのライブラリ格納ディレクトリの設定が漏れているいる可能性があります。 | DABrokerのライブラリ格納ディレクトリの設定を確認してください。 |
dup | 23 | ENFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 |
24 | EMFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 | |
fcntl | 23 | ENFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 |
24 | EMFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 | |
fork | 11 | EAGAIN | プロセスの数が多過ぎるか,一時的なメモリ不足が発生しています。 | 再度実行しても繰り返し発生する場合は,不要なプロセスを停止させてください。 |
12 | ENOMEM | 次のどちらかの要因が考えられます。
| 仮想メモリが足りない場合は,拡張してください。これらを拡張できない場合は,不要なプロセスを停止させてください。 一部のプロセスが大量のメモリを消費している場合は,該当するプロセスをいったん停止できないか検討してください。 | |
malloc | 12 | ENOMEM | 次のどちらかの要因が考えられます。
| 仮想メモリが足りない場合は,拡張してください。これらを拡張できない場合は,不要なプロセスを停止させてください。 一部のプロセスが大量のメモリを消費している場合は,該当するプロセスをいったん停止できないか検討してください。 |
mkdir | 13 | EACCESS | アクセス権限が不正です。 | DABroker運用ディレクトリ下の,ディレクトリに対するアクセス権限が正しいか確認してください。 |
28 | ENOSPC | ファイルシステムに十分な領域がありません。 | ファイルシステム内の不要なファイルを削除してください。 | |
open | 2 | ENOENT | ファイル,又はディレクトリが見付かりません。 | 環境変数が正しく設定されているかどうかを見直してください。 |
13 | EACCES | ファイルに対するアクセス権がありません。 | ファイルに対するアクセス権を確認してください。 | |
17 | EEXIST | 作成しようとしたファイルは既に存在します。 | ファイル名を変更して再度実行するか,既存のファイルが不要であれば,削除してから再度実行してください。 | |
23 | ENFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 | |
24 | EMFILE | オープンできるファイルの最大数に達しました。 | 不要なファイルをクローズしてください。 | |
semget | 28 | ENOSPC | セマフォ識別子を生成しようとしたが,システムの上限値を超えました。 | すべてのプログラムの所要量を見積り,設定値を変更した後に,マシンを再起動してください。 |
semop | 22 | EINVAL | DABroker稼働中に,DABrokerのインストールディレクトリ下の作業ファイルを削除した可能性があります。 | DABrokerを強制終了してください。その後,DABrokerのサービスを再起動してください。 |
shl_load | 8 | ENOEXEC | DBMSの設定が誤っている可能性があります。 | DBMSの設定を確認してください。 |
shmat | 22 | EINVAL | DABroker稼働中に,DABrokerのインストールディレクトリ下の作業ファイルを削除した可能性があります。または,DABrokerの起動が完了していない状態でコマンドを実行したことが考えられます。 | DABrokerが起動完了していない場合は,DABrokerの起動が完了してからコマンドを実行してください。DABrokerが異常終了していなければ,強制終了してください。その後,DABrokerのサービスを再起動してください。 |
shmget | 22 | EINVAL | DABroker稼働中に,DABrokerのインストールディレクトリ下の作業ファイルを削除した可能性があります。 | DABrokerを強制終了してください。その後,DABrokerのサービスを再起動してください。 |
28 | ENOSPC | ディスクの容量が不足しています。 | ディスクに,共用メモリサイズ以上の空き容量を確保してください。 | |
write | 5 | EIO | 入出力エラーが発生しました。 | OSやハードウェアの情報に従って対策してください。 |
14 | EFAULT | アクセスできない領域に書き込みしようとしました。書き込みしようとしたディスクが切り離された可能性があります。 | 保守員に連絡してください。 | |
27 | EFBIG | ファイルの大きさがシステムの制限値を超えました。 | DABroker管理ユーザでのファイルサイズの制限値をDABrokerで使用するファイルより大きくするか,無制限に変更してください。または,使用するファイルサイズを小さくしてください。 | |
28 | ENOSPC | ファイルシステムに十分な領域がありません。 | ファイルシステム内の不要なファイルを削除するか,領域に余裕のあるファイルシステムに移行してください。 | |
chmod, closecreat, dup, execv, fork, gethostbyaddr, gethostbyname, lseek, lockf, open, read, select, semctl, semget, semop, shmat, shmctl, shmdt, shmget, signal, sigsetmask, stat, writeなど | 22 | EINVAL | メモリ不足が考えられます。 | システムの仮想メモリの初期サイズと最大サイズを同じ値(固定値)にしてください。 |