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

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

注※ 製品で拡張された出力内容です。

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

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

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

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

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

次のメッセージが出力されます。

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

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

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

#
# 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) 内部論理エラーが発生した場合

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

内部論理エラーが発生した場合の出力内容

#
#  Internal Error (<ファイル名>:<行数> または,Internal Errorのコード), pid=<プロセスID>, tid=<スレッドID>
#  <内部論理エラー種別>: 内部論理エラーメッセージ
#
#  JRE version: <jreバージョン情報>
#  Java VM: Java HotSpot(TM) <VM種別> (<Sunバージョン情報>-<バージョン情報>-<ビルド年月日> mixed mode<OS名>-<CPU種別> <圧縮OOP>)
#
# <coreファイル情報>

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

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

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

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

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

または
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の場合

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) スタックトレース

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

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

(9) スレッド情報

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

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

(10) VMの状態

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

VM state:<現在の状態>

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

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


(11) メモリ情報

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

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

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

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

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

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

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

Heap
<Javaヒープ情報>

注※ 見出し部分は拡張スレッドダンプとエラーリポートファイルで次のように異なる。


拡張スレッドダンプの場合

Heap Status
-----------

エラーリポートファイルの場合

Heap

(13) Card tableマップアドレスの表示

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

Card table byte_map: [<アドレス>,<アドレス>] byte_map_base: <アドレス>

(14) Polling pageアドレスの表示

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

Polling page: <アドレス>

(15) Large pages 確保失敗情報

mmap()関数でのメモリ確保に失敗した場合に,失敗回数が出力されます。

Large page allocation failures have occurred <回数> times

(16) CodeCache情報

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

CodeCache: size=<全体サイズ> used=<使用済みサイズ> max_used=<最大サイズ> free=<空きサイズ>
bounds [<bottom>, <commit addr>, <reserve addr>]
total_blobs=<CodeBlobの総数> nmethods=<nmethodsの総数> adapters=<adapterの総数>
compilation: <enabled/disabled>

(17) Event情報

イベントバッファの内容がすべて出力されます。

<イベント種別名> (<イベント数> events):
<イベントレコード>
  :

イベント情報はリングバッファで管理していて,イベント種別ごとに保持するイベント数の最大値は10です。イベント数が0の場合は<イベントレコード>には"No events"が出力されます。

出力できる<イベント種別>の出力例を次に示します。

(18) ライブラリ

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

Dynamic libraries:
<ライブラリ>

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

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

Command : <コマンドライン>

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

(20) 環境変数

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

Environment Variables:
<環境変数=値>

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

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

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

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

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


(22) マシン情報

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

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

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


(23) システム名,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情報>

(24) 時間情報

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

time: <実行日付>

elapsed time: <実行時間> seconds <(実行時間 形式出力)>

実行日付の例を次に示します。
例:「Wed Aug 25 14:55:04 2004」
秒単位だけでは実行時間が把握しづらいため,<(実行時間 形式出力)>ではユーザが読みやすいように,(DAYS HOURS MINS SECS)フォーマットで出力します。
(例) elapsed time: 900 seconds (0d 0h 15m 0s)

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