インターフェイスとして提供される JNI クラスを介して、サードパーティのネイティブ モジュールにアクセスする Java 1.6 アプリケーションがあります。最近、ネイティブ モジュールで SEGFAULT が発生し、アプリケーションがクラッシュしていることに気付きました。少なくとも死ぬ前に適切にログに記録するために、このイベントをキャッチして処理することは可能ですか?
kjp's answerの記事で両方の Java 手法を試しました。どちらも機能しませんでした。「SEGV」にシグナル ハンドラをインストールしようとすると、例外が発生する
VM で既に使用されている信号: SEGV
私がインストールしたシャットダウン ハンドラーは、おそらくIBM の記事に次のように記載されているため、起動に失敗しました。
次の場合、シャットダウン フックは実行されません。
JVM を終了するために、Runtime.halt() メソッドが呼び出されます。Runtime.halt() は、JVM の迅速なシャットダウンを可能にするために提供されています。
-Xrs JVM オプションが指定されています。
JVM ソフトウェアによって生成された例外条件または強制アボートなど、JVM が異常終了します。