Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


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

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

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

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

〈この項の構成〉

(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"が出力されます。

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

(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=<特殊フラグ>
:
出力内容の意味は次のとおりです。
  • <シグナル種別>:/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ファイル>  <ロードモジュール>]

(26) ZGCページ情報

ZGCを使用している場合,次の内容が出力されます。

ZGC Page Table:
<ページの種類>l   <開始アドレス> <先頭アドレス> <終了アドレス>  <AllocatingまたはRelocatable>
 
ZbarrierSet