Cosminexus システム運用ガイド

[目次][用語][索引][前へ][次へ]

5.5.8 JavaVMが出力するメッセージログの調査(標準出力およびエラーリポートファイル)

JavaVMでクラッシュが発生した場合,JavaVMによってデバッグ情報が標準出力とエラーリポートファイルに出力されます。

エラーリポートファイルに出力されるのは,次の場合です。

ここでは,次の場合のメッセージログの出力内容について説明します。

表5-70  JavaVMが出力するメッセージログ

メッセージの種類 出力先
JNIの中でのシグナルが発生した場合,またはJavaVMでのメッセージ 標準出力
エラーリポートファイル
Cヒープが不足した場合のメッセージ 標準出力
エラーリポートファイル
Internal Errorが発生した場合のメッセージ 標準出力
エラーリポートファイル
スレッド作成に失敗した場合のメッセージ 標準出力

注※ 日立のJavaVM独自の出力先または出力内容があります。


なお,スレッド作成に失敗した場合のメッセージは,標準出力だけに出力されます。

<この項の構成>
(1) シグナルが発生した場合
(2) Cヒープが不足した場合
(3) Internal Errorが発生した場合
(4) スレッド作成に失敗した場合

(1) シグナルが発生した場合

シグナルが発生した場合,次に示す項目がログ出力されます。出力内容には,日立のJavaVMとして拡張された内容が含まれます。

注※ 日立で拡張された出力内容です。

それぞれの出力内容について説明します。

(a) 異常終了とシグナル種別

異常終了時の状態に応じて,次のどちらかの内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

シグナルを検出した場合
 
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  <発生したシグナル名> (<シグナル番号>) at pc=<PCアドレス>, pid=<プロセスID>, tid=<スレッドID>
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0_05-b05-CDK0700-20051129 mixed mode)
# Problematic frame:
# <種別コード>  [<シグナルが発生したライブラリ名>+<オフセット>]
#
 

注 シグナルが発生した関数名が取り出せた場合,「<シグナルが発生したライブラリ名>+<オフセット>」に続いて,その関数名とオフセットが表示されることがあります。


内部論理エラーが発生した場合
 
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  Internal Error (5448524541440E4350500D8F), pid=<プロセスID>, tid=<スレッドID>
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0_05-b05-CDK0700-20051129 mixed mode)
#
# Error: 内部論理エラーメッセージ
 
(b) カレントスレッド情報

次のどちらかの内容が出力されます。

 
Current thread (<アドレス>):  <スレッド名> "<スレッド名称>" [_<状態>, id=<スレッドID>]
 
 
Current thread (<アドレス>):  <スレッド名> [_id=<スレッドID>]
 
(c) シグナル情報の格納先アドレス

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
siginfo address: <アドレス>, context address: <アドレス>
 
(d) シグナル情報

次の内容が出力されます。

Windowsの場合
EXCEPTION_ACCESS_VIOLATION(読み込み違反)
 
siginfo: ExceptionCode=<シグナル番号>, reading address <アドレス>
 
EXCEPTION_ACCESS_VIOLATION(書き込み違反)
 
siginfo: ExceptionCode=<シグナル番号>, writing address <アドレス>
 
EXCEPTION_ACCESS_VIOLATION(その他)
 
siginfo: ExceptionCode=<シグナル番号>, ExceptionInformation=<付加情報>
 
EXCEPTION_ACCESS_VIOLATION以外
 
siginfo: ExceptionCode=<シグナル番号>, ExceptionInformation=<付加情報1> <付加情報2> ・・・
 

UNIXの場合
 
siginfo:si_signo=<シグナル番号>, si_errno=<番号>, si_code=<番号>, si_addr=<アドレス>
 
(e) siginfo情報(UNIXの場合)

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
siginfo structure dump (location: <siginfoのアドレス>) 
<siginfoのアドレス> <siginfoのアドレス> <siginfoのアドレス> <siginfoのアドレス>
 ... 
<siginfoのアドレス> <siginfoのアドレス> <siginfoのアドレス> <siginfoのアドレス>
 

注 <siginfoのアドレス>は16進数で出力されます。


(f) レジスタ情報

次の内容が出力されます。ただし,内部論理エラーの場合は出力されません。

 
Registers:<レジスタ情報>
:
 

注 UNIXの場合,BSPレジスタの値がデバッガ(gdb)の値と異なって出力されます。これは,デバッガではBSPの指すバッキングストア領域の内容を出力しており,BSPの指す位置を修正しているためです。


(g) スタックの先頭から格納されている情報

次の内容が出力されます。ただし,内部論理エラーの場合は出力されません。

 
Top of Stack: (sp=<スタックポインタのアドレス>)
<アドレス>:   <格納されている内容>
:
 

注 <格納されている内容>は16進数で出力されます。


(h) 命令コード情報

次の内容が出力されます。ただし,内部論理エラーの場合は出力されません。

 
Instructions: (pc=<プログラムカウンタのアドレス>)
<アドレス>:   <命令コード>
:
 

注 <命令コード>は16進数で出力されます。


(i) スタックトレース

次の内容が出力されます。ただし,Current threadがJavaThread以外の場合は出力されません。

 
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
 <スタックトレース>
:
 
(j) スレッド情報

次の内容が出力されます。

 
Java Threads: ( => current thread )
  <アドレス> JavaThread “<スレッド名称>“ [<状態>, id=<スレッドID>]
   :
=><アドレス> JavaThread “<スレッド名称>“
Other Threads:
  <アドレス> <スレッド名> [id=<スレッドID>]
   :
 
(k) VMの状態

次の内容が出力されます。

 
VM state:<現在の状態>
 
VM Mutex/Monitor currently owned by a thread: <mutexs/moniter>
 

注 この情報に続いて,ロック情報が出力される場合があります。


(l) メモリ情報

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
Memory :
<メモリ確保関数>:address<開始アドレス> - <終了アドレス>(size:<サイズ>)
        :
 
        Heap Size:<確保しているメモリサイズ>
        Alloc Size:<使用中のメモリサイズ>
        Free Size:<未使用のメモリサイズ>

<メモリ確保関数>は,mmap()またはmalloc()のどちらかです。アドレスは16進数で表示されます。

各種メモリサイズの単位はバイトです。

(m) Javaヒープの使用状況

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
Heap
<Javaヒープ情報>
 
(n) ライブラリ

次の内容に続いて,ローディングされているライブラリの一覧が出力されます。

 
Dynamic libraries:
<ライブラリ> 
:
 
(o) コマンドおよびVMパラメタ

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
Command : <コマンドライン>
 
Java Home Dir   : <JDK実行環境インストールディレクトリ>
Java DLL Dir    : <JDKのライブラリインストールディレクトリ>
Sys Classpath   : <システムクラスパス>
User Args       :
<コマンドオプション1>
<コマンドオプション2>
:
 
(p) 環境変数

次の内容が出力されます。

 
Environment Variables:
<環境変数=値>
:
 
(q) 登録済みシグナルハンドラ

次の内容が出力されます。

 
Signal Handlers:
<シグナル種別>:
 [<シグナルハンドラアドレス>], sa_mask[0]=<シグナルマスク>, sa_flags=<特殊フラグ>
:
Changed Signal Handlers -
<シグナル種別>: [<シグナルハンドラアドレス>], sa_mask[0]=<シグナルマスク>, sa_flags=<特殊フラグ>
:
 

出力内容の意味は次のとおりです。


(r) マシン情報

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
Host: <ホスト名>:<IPアドレス>
 

注 <IPアドレス>には複数のIPアドレスが表示されることがあります。


(s) システム名,CPU,実メモリ,およびVM情報

次の内容が出力されます。

Windowsの場合
 
OS: <OSバージョン>
 
CPU: <利用可能CPU数>,<CPU種別>
 
Memory: <実メモリ情報>
 
vm_info: <VM情報>
 

UNIXの場合
 
OS: <OSバージョン>
 
uname:<uname出力>
libc:<libcのバージョン番号>(出力されない場合があります)
rlimit:<リミット値>
load average:<ロードアベレージ>
 
CPU: <利用可能CPU数>,<CPU種別>
 
Memory: <実メモリ情報>
 
vm_info: <VM情報>
 
(t) 時間情報

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

 
Local Time = <実行日付>
 
Elapsed Time = <実行時間>
 

実行日付には出力内容の例を次に示します。

例:「Wed Aug 25 14:55:04 2004」


(u) javatrace起動コマンドのコマンドライン(UNIXの場合)

次の内容が出力されます。この内容は,日立のJavaVMで拡張された出力内容です。

# You can get further information from javatrace.log file generated
# by using javatrace command.
# usage: javatrace core-file-name loadmodule-name [out-file-name] [-l(library-name)...]
# Please use javatrace command as follows and submit a bug report
# to Hitachi with javatrace.log file:
#[<インストールディレクトリ>/jre/bin/javatrace <coreファイル>  <ロードモジュール>]

(2) Cヒープが不足した場合

Cヒープが不足した場合,次の順序でメッセージ出力およびダンプ出力,またはcoreダンプの生成が実行されます。

  1. Cヒープ不足を示すメッセージログが,エラーリポートファイルおよび標準出力に出力されます。
  2. 1.の実行中にメモリ不足が発生した場合,簡易メッセージが標準出力に出力されます。
  3. Windowsの場合,ワトソンログが起動され,ダンプ出力が実行されます。UNIXの場合,簡易メッセージの出力処理中にさらにメモリ不足が発生したときに,メッセージおよびエラーログファイルの出力処理を中止して,coreダンプを生成します。

それぞれの出力形式を次に示します。

(a) Cヒープ不足を示すメッセージログの出力内容

Cヒープ不足を示すメッセージログの出力形式を次に示します。この形式は,エラーリポートファイルと標準出力で共通です。

このようなメッセージが出力された場合は,Cヒープを減らすなど,適切な対策をしてください。

出力項目について次に示します。

表5-71  Cヒープが不足した場合のメッセージログの出力項目

出力項目 説明
ThreadName Thread#getName()メソッドで取り出せるスレッド名称が出力されます。
n メモリ確保要求サイズが出力されます。
message 保守員による調査に必要な内部メッセージが出力されます。出力されない場合もあります。
Javaヒープ情報 Javaヒープの使用状況が出力されます。
スタックトレース メモリ不足の発生したスレッドがJava コードを実行しているスレッドである場合に,スタックトレースが出力されます。
コンパイル処理のようなJavaVMの内部処理を実行するスレッドでメモリ不足が発生した場合には出力されません。
(b) メモリ不足を示すメッセージの出力内容

Cヒープ不足を示すメッセージログが出力されている間にさらにメモリ不足が発生した場合は,処理の続行ができません。この場合は,次の形式の簡易メッセージが標準出力に出力されます。

 
java.lang.OutOfMemoryError:requested <n> bytes for <message>
 

出力項目について次に示します。

表5-72 メモリ不足が発生した場合の簡易メッセージの出力項目

出力項目 説明
n メモリ確保要求サイズが出力されます。
message 保守員による調査に必要な内部メッセージが出力されます。
(c) ワトソンログが正しく出力されたかどうかを示すメッセージの出力内容(Windowsの場合)

簡易メッセージの出力後は,ワトソンログが起動され,ダンプ出力が実行されます。ただし,ワトソンログが正常に出力できない場合がありますので,標準出力に出力される処理結果のメッセージを確認してください。

次のメッセージは,ワトソンログの起動に失敗した場合に出力されます。

 
WatosonLog process generated.But couldn't generate dump file,because of resource shortage.
 

次のメッセージは,ワトソンログの起動後,ダンプ出力に失敗した場合に出力されます。

 
Couldn't generate dump file,because of resource shortage.
 

これらの処理に成功した場合は,次に示すメッセージが出力されます。ただし,この場合もワトソンログが正常にダンプ出力しない場合があります。このメッセージが出力された場合も,実際にダンプが出力されているかどうかを確認してください。

 
Although Dr.Watson process finished successfully,dump file isn't always generated.
Check your directory where dump file is stored.
 
(d) coreダンプの生成を示すメッセージの出力内容

簡易メッセージの出力処理中にさらにメモリ不足が発生した場合,メッセージおよびエラーログファイルの出力処理を中止して,coreダンプを生成します。coreダンプが生成されると,次の形式のメッセージが標準出力に出力されます。

 
Can't create logs because of memory shortage.
Insufficient memory for malloc. JVM generates core file

(3) Internal Errorが発生した場合

JavaVM内部の論理エラーであるInternal Errorが発生した場合,次の情報が出力されます。

注※ 日立で拡張された出力内容です。

それぞれの情報の出力形式については,「(1)シグナルが発生した場合」を参照してください。

(4) スレッド作成に失敗した場合

メモリ不足(OutOfMemoryError)などが発生して新しくスレッドを作成できなかった場合,その時点でのスレッド数が,標準出力に出力されます。ここには,作成に失敗したスレッド数も含まれます。

メモリ不足などによってスレッドの作成に失敗した場合の出力例を次に示します。

 
java.lang.OutOfMemoryError:unable to create new native thread.1200 threads exist.
…
 

JavaVM起動時にスレッド作成に失敗した場合の出力例を次に示します。

 
Error occurred during initialization of VM
Could not create thread for VM:VM Thread.5 threads exist.