5.8.1 シグナルが発生した場合
シグナルが発生した場合,次に示す項目がログ出力されます。出力内容には,JavaVMとして拡張された内容が含まれます。
-
異常終了位置とシグナル種別※
-
カレントスレッド情報
-
シグナル情報の格納先アドレス※
-
シグナル情報
-
siginfo情報※(UNIXの場合)
-
レジスタ情報
-
スタックの先頭から格納されている情報
-
命令コード情報
-
スタックトレース
-
スレッド情報
-
VMの状態
-
メモリ情報※
-
Javaヒープの使用状況※
-
Card tableマップアドレスの表示
-
Polling pageアドレスの表示
-
Large pages 確保失敗情報
-
CodeCache情報
-
Event情報
-
ライブラリ
-
コマンドおよびVMパラメタ※
-
環境変数
-
登録済みシグナルハンドラ
-
マシン情報※
-
システム名,CPU,実メモリ,およびVM情報
-
時間情報※
-
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マップアドレスの表示
次の内容が出力されます。ただし,ZGCを使用している場合は出力されません。
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"が出力されます。
出力できる<イベント種別>の出力例を次に示します。
-
Compilation events
JITコンパイル情報
Compilation events (10 events): Event: 0.923 Thread 0x00002aaab2f01800 389 b java.io.FileOutputStream::write (12 bytes) Event: 0.923 Thread 0x00002aaab2f01800 nmethod 389 0x00002aaaac3ea490 code [0x00002aaaac3ea5e0, 0x00002aaaac3ea668] :
-
GC Heap History
before GC,after GC情報
GC Heap History (4 events): Event: 23.719 GC heap before {Heap before GC invocations=0 (full 0): def new generation max 154880K, total 9664K, used 345K (0.2% used/max, 3.6% used/total) :
-
Deoptimization events
Deopt情報
Deoptimization events (10 events): Event: 0.818 Thread 0x00002aaaaba7e000 Uncommon trap 24 fr.pc 0x00002aaaac3d1eec Event: 0.818 Thread 0x00002aaaaba7e000 Uncommon trap 54 fr.pc 0x00002aaaac3d0dd8 :
-
Internal exceptions
internal exception情報
Internal exceptions (2 events): Event: 0.025 Thread 0x00002aaaaba7e000 Threw 0x00000000db606140 at /hotspot/src/share/vm/prims/jni.cpp:4008 Event: 0.061 Thread 0x00002aaaaba7e000 Threw 0x00000000db649980 at /hotspot/src/share/vm/prims/jvm.cpp:1167 :
-
Events
クラスローダ情報など
Events (10 events): Event: 0.080 loading class 0x00002aaab302e990 Event: 0.080 loading class 0x00002aaab302e990 done Event: 4.286 Executing VM operation: EnableBiasedLocking Event: 4.286 Executing VM operation: EnableBiasedLocking done :
-
Classes unloaded(JDK17以降の場合)
アンロードしたクラス情報
Classes unloaded (20 events): Event: 18.331 Thread 0x0000027bd4519370 Unloading class 0x0000000800c00400 'Test' Event: 18.337 Thread 0x0000027bd4519370 Unloading class 0x0000000800c00400 'Test' Event: 18.342 Thread 0x0000027bd4519370 Unloading class 0x0000000800c00400 'Test' :
(19) コマンドおよびVMパラメタ
次の内容が出力されます。この内容は,JavaVMで拡張された出力内容です。
Command : <コマンドライン> Java Home Dir : <JDK実行環境インストールディレクトリ> Java DLL Dir : <JDKのライブラリインストールディレクトリ> Sys Classpath : <システムクラスパス> User Args : <コマンドオプション1> <コマンドオプション2> :
(21) 登録済みシグナルハンドラ
次の内容が出力されます。
Signal Handlers: <シグナル種別>: [<シグナルハンドラアドレス>], sa_mask[0]=<シグナルマスク>, sa_flags=<特殊フラグ> : Changed Signal Handlers - <シグナル種別>: [<シグナルハンドラアドレス>], sa_mask[0]=<シグナルマスク>, sa_flags=<特殊フラグ> :
- 出力内容の意味は次のとおりです。
-
-
<シグナル種別>:/usr/include/sys/signal.hに定義されているシグナル名です。
-
<シグナルハンドラアドレス>:シグナルハンドラのアドレスが16進で出力された値です。「ライブラリ名+オフセット」という形式で表示されることもあります。
-
<シグナルマスク>:sigaction()で取り出せる構造のsa_maskフィールド値が16進で出力された値です。
-
<特殊フラグ>:sigaction()で取り出せる構造のsa_flagsフィールド値が16進で出力された値です。
-
(22) マシン情報
次の内容が出力されます。この内容は,JavaVMで拡張された出力内容です。
Host: <ホスト名>:<IPアドレス>
- 注
-
<IPアドレス>には複数のIPアドレスが表示されることがあります。
(23) システム名,CPU,実メモリ,およびVM情報
次の内容が出力されます。
Windowsの場合
OS: <OSバージョン> CPU: <利用可能CPU数>,<CPU種別> Memory: <実メモリ情報> vm_info: <VM情報>
UNIXかつJDK11以前の場合
OS: <OSバージョン> [uname:<uname出力>] [libc:<libcのバージョン番号>] [rlimit:<リミット値>] [load average:<ロードアベレージ>] [/proc/meminfo:</proc/meminfoの内容>] CPU: <利用可能CPU数>[,<CPU種別>] Memory: <実メモリ情報> vm_info: <VM情報>
UNIXかつJDK17以降の場合
OS: <OSバージョン> uname:<uname出力> OS uptime: <システム起動時からの経過時間> libc:<libcのバージョン番号> rlimit (soft/hard): <リミット値> load average:<ロードアベレージ> /proc/meminfo: </proc/meminfoの内容> /sys/kernel/mm/transparent_hugepage/enabled: </sys/kernel/mm/transparent_hugepage/enabledの内容> /sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): </sys/kernel/mm/transparent_hugepage/defragの内容> Process Memory: <プロセスのメモリ情報> /proc/sys/kernel/threads-max (system-wide limit on the number of threads): </proc/sys/kernel/threads-maxの内容> /proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): </proc/sys/vm/max_map_countの内容> /proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): </proc/sys/kernel/pid_maxの内容> container (cgroup) information: <コンテナ情報> CPU:total <CPU数> <CPU概要> CPU Model and flags from /proc/cpuinfo: <model nameの内容> <flagsの内容> <CPUに関する追加情報> Memory: <1ページのバイト数>k page, physical <物理メモリ数>k(<空きメモリ数>k free), swap <スワップメモリ数>k(<空きスワップのメモリ数>k free) vm_info: Java HotSpot(TM) <VM種別> (<Oracleバージョン情報>-<日立バージョン情報>-<ビルド年月日>) for linux-amd64 JRE (<Oracleバージョン情報>-<日立バージョン情報>-<ビルド年月日>), built on <MMM dd yyyy HH:mm:ss> by "Java" with gcc 8.3.1 20190507 (Red Hat 8.3.1-4)
(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: #[<インストールディレクトリ>/bin/javatrace <coreファイル> <ロードモジュール>]