Linux でのスタック・オーバーフロー条件

Linux® でのスタック・オーバーフローは SIGSEGV エラーによって識別できますが、コンソールに情報が表示されずに、Java™ 仮想マシン (VM) が予期せずに停止する可能性があります。

スタック・オーバーフローがないときに SIGSEGV エラーを受け取った場合は、 ダンプ・ファイルが生成されない可能性があるシナリオ の例のように、診断情報がコンソールに書き込まれます。

スタック・オーバーフローが発生した場合、最も可能性の高い結果として次の 2 つのものがあります。
  • Java プロセスの作業ディレクトリーにコア・ファイル (core.pid) が生成されました。
  • コア・ファイルが作成されなかったか、コア・ファイルが切り捨てられている。
最初のシナリオでは、 コア・ファイルには VM の一連の全スレッドが含まれているはずで、そのコア・ファイルをダンプ・ビューアーで使用して、 欠落している診断情報を取り出すことができます。 ダンプ・ビューアーについて詳しくは、 OpenJ9 ユーザー資料の「 ダンプ・ビューアー 」を参照してください。 コア・ファイルは、システム・レベルで構成されていない限り、 異常終了時にプロセスの作業ディレクトリーに作成されます。

コア・ファイルが作成されなかった場合、システム設定を調べて コア・ファイルの生成が有効になっていることを確認してから、アプリケーションを再実行する必要があります。 詳しくは、 OpenJ9 ユーザー資料の システムの構成 を参照してください。

システム設定で既にコア・ファイルの生成が有効になっているが、コア・ファイルが作成されなかった場合、この問題はスタック・オーバーフローではありません。 スタック・オーバーフロー・ケースでのコア・ファイルの生成は、-Xrsまたは-Xrs:syncオプションを指定して実行する場合のSIGSEGVエラーと同じでなければなりません。 詳しくは、 OpenJ9 ユーザー資料の -Xrs を参照してください。