![]() |
![]() |
WebOTX Manual V10.3 (第4版) 目次を表示 |
WebOTX が異常終了した際、 ${INSTANCE_ROOT}/config ディレクトリ配下に hs_err_pid{プロセスID}.log という JVM がクラッシュしたことを示すログファイルが生成されることがあります。また、Standardを利用している場合は、 ${INSTALL_ROOT}/Trnsv/bin 配下にも同様のファイルが生成されることがあります。これは大抵の場合、次のような原因が挙げられます。
JavaVM が使用するライブラリやネイティブライブラリの不具合(JVM の不具合)
アプリケーションのネイティブコード上の不具合
OS のリソース不足、あるいは OS 上の不具合による外的要因
この時、WebOTX が異常終了した時刻とほぼ同一のタイムスタンプを持つクラッシュファイルが存在する場合は、そのファイルの内容を基にクラッシュ発生の原因を特定し、解決手段を見つける必要があります。
以下に、本ファイルの出力内容における確認ポイント、および幾つかの代表的なケースでの対処例について示します。
利用する JVM バージョンやベンダーにより多少出力内容は異なりますが、ファイル内の先頭行には、次のようなメッセージが出力されています。
主に注目すべき内容を下線で示しています。それぞれの意味は次の通りです。
異常終了の原因となったシグナル名、あるいはエラー名 : (EXCEPTION_ACCESS_VIOLATION)
ここでは他に次のようなものが出力されます
シグナル名、あるいはエラー名 | 内容 |
---|---|
EXCEPTION_ACCESS_VIOLATION | アクセス(読み込み/書き込み)違反(Windows 系) |
SIGSEGV | メモリへの不正アクセス(UNIX 系) |
SIGILL | 不正なマシン命令の呼び出し(UNIX 系) |
EXCEPTION_STACK_OVERFLOW | 実行スレッド内でのスタックオーバーフローの発生 |
Internal Error | JVM に関わる内部的なエラーの発生 |
プロセス ID : (pid=708)
スレッド ID : (tid=3744)
JVM バージョン : (1.7.2_ ....)
異常終了の原因となった JVM 内のプログラム(関数フレーム実行箇所) : (V [jvm.dll+0x451e7])
シグナルまたはエラー(EXCEPTION_ACCESS_VIOLATION)を発生させたのは、プロセスID(pid=708)で示されたスレッド(tid=3744)であり、さ らにそのスレッドにおいて当時実行されていたプログラムは(V [jvm.dll+0x451e7])であったことを示しています。
の具体的なスレッドについての情報は、上記出力例のすぐ下に、次のような形式で出力されています。
この場合、スレッド(tid=3744)は main という名前を持つ Java スレッドであったことを示しています。
すなわち、この main スレッドの実行中に(V [jvm.dll+0x451e7])で示された jvm.dll という JVM が使用するライブラリが参照されており、その中で致命的なエラーが発生してクラッシュしたことになります。
以上のようにして本ファイルの内容を読み解くことで、クラッシュ発生当時の状況の概要を理解することができます。
クラッシュ発生当時の状況を把握した上で、次にクラッシュ発生の原因を突き止める必要があります。
この時、先に示したクラッシュ発生当時の情報を基に調査を進めることになりますが、UNIX 系 OS の場合は通常クラッシュファイルの出力先に core ファイルも同時に出力されていますので、gdb ツールによって core ファイルを読み込ませて解析することで、さらにエラー発生当時のプロセス内部の具体的な動作状況を知ることができます。
まずは、クラッシュしたプログラムがJavaVM 内か、アプリケーションが利用しているライブラリであるかを切り分ける必要があります。
クラッシュしたプログラムがJavaVM 内のプログラムであった場合は、これらの解析結果を基に、まずはJavaVMを提供しているベンダーの公式サイトにて、同様のクラッシュ発生要因が JVM の不具合として掲載されていないか、あるいはその不具合が改修されていないかどうかを確認します。
クラッシュしたプログラムがアプリケーションが利用しているライブラリであった場合は、そのライブラリの開発元に確認をしてください。