5.8.1 シグナルが発生した場合

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

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

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

<この項の構成>
(1) 異常終了位置とシグナル種別
(2) カレントスレッド情報
(3) シグナル情報の格納先アドレス
(4) シグナル情報
(5) siginfo情報(UNIXの場合)
(6) レジスタ情報
(7) スタックの先頭から格納されている情報
(8) 命令コード情報
(9) スタックトレース
(10) スレッド情報
(11) VMの状態
(12) メモリ情報
(13) Javaヒープの使用状況
(14) ライブラリ
(15) コマンドおよびVMパラメタ
(16) 環境変数
(17) 登録済みシグナルハンドラ
(18) マシン情報
(19) システム名,CPU,実メモリ,およびVM情報
(20) 時間情報
(21) javatrace起動コマンドのコマンドライン(UNIXの場合)

(1) 異常終了位置とシグナル種別

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

(a) シグナルを検出した場合

JDKのバージョンごとの出力メッセージを次に示します。

JDK 6の場合の出力メッセージ

#
# A fatal error has been detected by the Java Runtime Environment:

JDK 5.0の場合の出力メッセージ

#
# An unexpected error has been detected by HotSpot Virtual Machine:

JDK 6の場合を例に,出力内容を示します。

シグナルを検出した場合の出力内容

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  <発生したシグナル名> (<シグナル番号>) at pc=<PCアドレス>, pid=<プロセスID>, tid=<スレッドID>
#
# JRE version: <jreバージョン情報>
# Java VM: Java HotSpot(TM) <VM種別> (<Sunバージョン情報>-<日立バージョン情報>-<ビルド年月日> mixed mode<OS名>-<CPU種別>)
# Problematic frame:
# <種別コード>  [<シグナルが発生したライブラリ名>+<オフセット>]
#

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


(b) 内部論理エラーが発生した場合

JDKのバージョンごとの出力内容を次に示します。

JDK 6の場合に内部論理エラーが発生したときの出力内容

#
#  Internal Error (0xe0000000), pid=<プロセスID>, tid=<スレッドID>
#  <内部論理エラー種別>: 内部論理エラーメッセージ
#
#  JRE version: 6.0
#  Java VM: Java HotSpot(TM) <VM種別> (<Sunバージョン情報>-<日立バージョン情報>-<ビルド年月日> mixed mode<OS名>-<CPU種別>)

注 Internal Errorには,ファイル名および行数の組み合わせ,またはInternal Errorのコードが出力されます。<内部論理エラー種別>には,発生した内部論理エラーの種類によって,"fatal error","guarantee(<論理式>) failed",または"Error"のどれかが出力されます。
JDK 5.0の場合に内部論理エラーが発生したときの出力内容

#
#  Internal Error (5448524541440E4350500D8F), pid=<プロセスID>, tid=<スレッドID>
#
# Java VM: Java HotSpot(TM) <VM種別> (<Sunバージョン情報>-<日立バージョン情報>-<ビルド年月日> mixed mode<OS名>-<CPU種別>)
#
# Error: 内部論理エラーメッセージ

注※ Internal Errorには,ファイル名,および行番号を16進数に変換した文字列が出力されます。

(2) カレントスレッド情報

JDKのバージョンごとの出力内容を次に示します。

JDK 6の場合
スレッドの種類に応じて次の3種類の情報が出力されます。

Current thread (<アドレス>):  <スレッド名> "<スレッド名称>" [_<状態>, id=<スレッドID>, stack(<開始アドレス>,<終了アドレス>)]

または
Current thread (<アドレス>):  <スレッド名> [_id=<スレッドID>, stack(<開始アドレス>,<終了アドレス>)]

または
Current thread is native thread

JDK 5.0の場合
スレッドの種類に応じて次の3種類の情報が出力されます。

Current thread (<アドレス>):  <スレッド名> "<スレッド名称>" [_<状態>, id=<スレッドID>]

または
Current thread (<アドレス>):  <スレッド名> [_id=<スレッドID>]

または
Current thread is native thread

(3) シグナル情報の格納先アドレス

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

siginfo address: <アドレス>, context address: <アドレス>

(4) シグナル情報

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

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の場合(JDK 6を使用している場合)

siginfo:si_signo=<発生したシグナル名>, si_errno=<番号>, si_code=<番号>(<シグナル理由種別>), si_addr=<アドレス>

UNIXの場合(JDK 5.0を使用している場合)

siginfo:si_signo=<シグナル番号>, si_errno=<番号>, si_code=<番号>, si_addr=<アドレス>

(5) siginfo情報(UNIXの場合)

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

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

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


(6) レジスタ情報

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

Registers:<レジスタ情報>

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


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

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

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

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


(8) 命令コード情報

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

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

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


(9) スタックトレース

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

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

(10) スレッド情報

JDKのバージョンごとの出力内容を次に示します。

JDK 6の場合

Java Threads: ( => current thread )
 <アドレス> JavaThread “<スレッド名称>“ [<状態>, id=<スレッドID>, stack(<開始アドレス>,<終了アドレス>)]
   :
=><アドレス> JavaThread “<スレッド名称>“ [<状態>, id=<スレッドID>, stack(<開始アドレス>,<終了アドレス>)]
Other Threads:
 <アドレス> <スレッド名> [stack(<開始アドレス>,<終了アドレス>)] [id=<スレッドID>]
   :

JDK 5.0の場合

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

(11) VMの状態

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

VM state:<現在の状態>

VM Mutex/Monitor currently owned by a thread: <mutexs/moniter>

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


(12) メモリ情報

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

Memory :
<メモリ確保関数>:address<開始アドレス> - <終了アドレス>(size:<サイズ>)
       :

       Heap Size:<確保しているメモリサイズ>
       Alloc Size:<使用中のメモリサイズ>
       Free Size:<未使用のメモリサイズ>

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

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

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

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

Heap
<Javaヒープ情報>

(14) ライブラリ

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

Dynamic libraries:
<ライブラリ>

(15) コマンドおよびVMパラメタ

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

Command : <コマンドライン>

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

(16) 環境変数

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

Environment Variables:
<環境変数=値>

(17) 登録済みシグナルハンドラ

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

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

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

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


(18) マシン情報

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

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

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


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

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

Windowsの場合

OS: <OSバージョン>

CPU: <利用可能CPU数>,<CPU種別>

Memory: <実メモリ情報>

vm_info: <VM情報>

UNIXの場合

OS: <OSバージョン>

[uname:<uname出力>]
[libc:<libcのバージョン番号>]
[rlimit:<リミット値>]
[load average:<ロードアベレージ>]
[/proc/meminfo:</proc/meminfoの内容>]

CPU: <利用可能CPU数>[,<CPU種別>]

Memory: <実メモリ情報>

vm_info: <VM情報>

(20) 時間情報

JDKのバージョンごとの出力内容を次に示します。

JDK 6の場合

time: <実行日付>

elapsed time: <実行時間> seconds

JDK 5.0の場合

Local Time = <実行日付>

Elapsed Time = <実行時間>

JDK 6およびJDK 5.0の実行日付の例を次に示します。
例:「Wed Aug 25 14:55:04 2004」
注※
この内容は,日立のJavaVMで拡張された出力内容です。

(21) 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ファイル>  <ロードモジュール>]