1. ホーム
  2. c++

[解決済み] C++プログラムがEXIT CODEでクラッシュする。9 (SIGKILL)

2022-02-01 20:15:34

質問

アプリケーションプログラムがEXIT CODEでクラッシュしてしまいます。9 (SIGKILL)

kill -9 (pid)」や「pkill (プロセス名)」など、実行中のプロセスを終了させるコマンドを実行したことがありません。

この場合、どこからデバッグを始めればよいのでしょうか?

  1. プログラムがクラッシュしたときにスタックトレースをダンプしようとしましたが、エラー処理のためにSIGKILLを捕捉できないことがわかりました。

  2. このプログラムはMPIを使用し、クラスタ環境で動作しています。実行後1時間程度で終了します。

SIGKILL例外を発生させる一般的な原因はありますか?

(linux; cent os 7で動作しています。)

解決方法は?

この質問に対する回答は、後ほどどなたかのご参考になればと思います。

例外はOutOfMemoryによって引き起こされました。

プロセスがメモリを過剰に確保し、OSに負担をかけている。OSにヒットマンがいる。 オームキラー システムの安定のために、そのようなプロセスを停止させる。oom-killerはSIGKILLと呼ばれる弾丸を使用します。

しかし、SIGKILLは目に見えない(アプリケーションがキャッチして処理できない)ので、私を含む一部の初心者にとっては、クラッシュの真の原因を突き止めるのは必ずしも容易ではありません。

良い点としては、ヒットマンがあなたのプロセスを殺すとき、必ずその動作を /var/log/messages に記録することです。

OS の設定によっては、oom-killer はメッセージを全く記録しないかもしれません。そのような場合にも、設定することができます。googleでrsyslog configurationを検索してください。

Linux OOMキラーによって強制終了されたプロセスの検索