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) コマンドライン

サマリーとしてコマンドライン情報が出力されます。

Command Line: <コマンドライン>

(3) CPU,メモリ,OSバージョン

サマリーとしてCPU,メモリ,OSバージョンが出力されます。

Host: <CPU名>, <CPU数> cores, <メモリサイズ>, <OSバージョン>

(4) 時間情報

サマリーとして時間情報が出力されます。

[日立JDK]
Time: <実行日付> elapsed time: <(実行時間 形式出力)>

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

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

(6) JITコンパイラスレッド情報

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

Current CompileTask:
<エラー発生時に処理していたコンパイルタスク>

(7) スタックトレース

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

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

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

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

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

(9) シグナル情報

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

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: <アドレス>

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

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

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

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

(11) CDS(クラスデータの共有)へのアクセスエラー情報

CDSへのアクセスでシグナルが発生した場合,次のメッセージが出力されます。

Error accessing class data sharing archive. Mapped file inaccessible during execution, possible disk/network problem.
注※

Windowsの場合:EXCEPTION_IN_PAGE_ERROR

UNIXの場合:SIGBUSまたはSIGSEGV

(12) レジスタ情報

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

Registers:<レジスタ情報>
:

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

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

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

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

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

(14) レジスタスタック(bsp)の先頭から格納されている内容の表示

次の内容はLINUX/IPFの場合にだけ表示されます。

Top of Register Stack: (bsp=<アドレス>)
<アドレス>:   <格納されている内容>
:

内部論理エラーの場合は出力されません。

(15) スタックスロットのマッピング情報

次の内容は,内部倫理エラーの場合は出力されません。

Stack slot to memory mapping:
 
<マッピング情報>
native method entry point (kind = <メソッドの種類>)  [<メモリ範囲の開始アドレス>, <メモリアドレスの終了アドレス>]  <コードサイズ> bytes
:

(16) CodeBlobの表示

エラー発生時のマシンが,動的に生成されたマシン語コードのアドレスであった場合,CodeBlobが出力されます。

(a) Interpreter用のコードの場合

次の情報が出力されます。

<コードの説明>  <コード種別> <コード名>  [コードの開始アドレス, コードの終了アドレス]  <コードサイズ> bytes
<コードのデコード結果>

(b) Interpreter用以外のコードの場合

次の情報が出力されます。

<コードが属するグループ名>::<コード名> [コードの開始アドレス, コードの終了アドレス[ (<コードサイズ> bytes)<コードのデコード結果>

(17) VMオペレーション

VMスレッドでエラーが発生したときに出力されます。

VM_Operation (<アドレス>): <名称>, mode: <モード>, requested by thread <呼び出しスレッドのアドレス>

(18) ユーザ情報

JDK17以降の場合で,かつUNIX系のときに出力されます。ExtensiveErrorReportsオプションが有効な場合,ユーザーの詳細情報が出力されます。

uid  : <実ユーザーID> euid : <実効ユーザーID> gid  : <実グループID> egid : <実効グループID>
 
umask: <ファイル属性の値> (<ファイル属性>)

(19) スレッド情報

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

(20) コンパイルタスク情報(JDK21以降の場合)

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

Threads with active compile tasks:
Total: <タスク数>

(21) VMの状態

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

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

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

(22) OutOfMemoryErrorとStackOverflow例外の発生回数

OutOfMemoryErrorまたはStackOverflow例外が発生していた場合,発生回数が出力されます。

OutOfMemory and StackOverflow Exception counts:
OutOfMemoryError java_heap_errors=<Javaヒープ領域でOOM例外が発生した回数>
OutOfMemoryError metaspace_errors=<Metaspace領域でOOM例外が発生した回数>
OutOfMemoryError class_metaspace_errors=<Compressedクラス領域でOOM例外が発生した回数>
StackOverflowErrors=<StackOverflow例外が発生した回数>
LinkageErrors=< LinkageError例外が発生した回数>
注※

例外が発生していない場合は出力されません。

(23) 圧縮OOP情報

JDK11の場合で,かつUseCompressedOopsオプションがONの場合に,次の内容が出力されます。

Heap address: <Javaヒープのアドレス>, size: <予約サイズ> MB, Compressed Oops mode: <OOP情報>
Narrow klass base: <narrow_klassのベースアドレス>, Narrow klass shift: <ビット数>
Compressed class space size: <CompressedClassSpaceのサイズ> Address: <CompressedClassSpaceのアドレス>

(24) CompressedClassSpace情報

JDK17以降の場合で,かつUseCompressedClassPointersオプションがONの場合に,次の内容が出力されます。なお,UseSharedSpacesオプションによって出力される内容が異なります。

(25) メモリ情報

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

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

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

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

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

次の内容が出力されます。GCとヒープに関する情報です。

GCについては,ZGCの使用有無やJDKのバージョンによって出力内容が異なります。

(27) ZGCページ情報

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

(28) G1GC領域情報

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

Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, TAMS=top-at-mark-start, PB=parsable bottom
|<id>|<開始アドレス>, <現在の使用アドレス>, <終了アドレス>|<使用率>%|<リージョンの種類>|  |TAMS <マークフェーズ開始アドレス>| PB <解析可能な開始アドレス>| < Untracked/Updating/Complete >
:

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

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

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

(30) マークビット情報

G1GCが,どのメモリ領域に対してマークビットを使ってオブジェクトの生存状態を追跡しているかの情報が出力されます。G1GCを使用している場合に次の内容が出力されます。

Marking Bits: (CMBitMap*) <CMBitMap構造体のメモリアドレス>
 Bits: [<開始アドレス>, <終了アドレス>)

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

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

Polling page: <アドレス>

(32) Large pages 確保失敗情報

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

Large page allocation failures have occurred <回数> times

(33) Metaspace情報

次の内容が出力されます。JDKのバージョンによって出力内容が異なります。

(34) CodeCache情報

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

CodeCache: size=<全体サイズ> used=<使用済みサイズ> max_used=<最大サイズ> free=<空きサイズ>
 bounds [<bottom>, <commit addr>, <reserve addr>]
 total_blobs=<CodeBlobの総数> nmethods=<nmethodsの総数> adapters=<adapterの総数>
 compilation: <enabled/disabled>
          stopped_count=<コンパイラ停止回数>, restarted_count=<コンパイラ再開回数>
 full_count=<コードキャッシュ領域が枯渇した回数>

(35) Event情報

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

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

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

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

(36) ライブラリ

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

Dynamic libraries:
<ライブラリ> 
:

(37) ネイティブデコーダ

dll(windbg.dll),およびシンボルハンドラの情報が出力されます。Windowsの場合に,次の内容が出力されます。

dbghelp: <ロードの状態> - version: <Imagehlpのバージョン> - missing functions: <ロードに失敗した関数名>
symbol engine: <初期化の状態> - sym options: <オプションマスク> - pdb path: <PDBのパス>

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

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

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

(39) フラグ

デフォルト値と異なるJVMのフラグ情報が出力されます。例えば,コマンドライン引数に指定した場合やJVM内部で動的に設定された場合が該当します。

[Global flags]
  <フラグ情報>
  :

(40) WhiteBox API

WhiteBox APIを使用している場合,使用している旨の警告メッセージが出力されます。

Unsupported internal testing APIs have been used.

(41) ロギング

-Xlogオプションに関するロギング情報が出力されます。

Log output configuration:
<ロギング情報>
  :

(42) 環境変数

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

Environment Variables:
<環境変数=値>
:

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

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

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進で出力された値です。

(44) ネイティブメモリトラッキング情報

次の内容は,-XX:NativeMemoryTracking=[summary|detail]オプションを指定した場合に出力されます。

Native Memory Tracking:
 
Total: reserved=<reservedサイズ>KB, committed=<committedサイズ>KB
:

(45) TRIM機能使用情報(JDK21以降の場合)

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

Periodic native trim enabled (interval: <インターバル> ms)

TRIM機能を使えない場合,「Periodic native trim disabled」が出力されます。

(46) ダイレクトバッファ情報(JDK17以降の場合)

ダイレクトバッファの使用状況が出力されます。

Direct Buffer:
  Used : <使用サイズ>
  Total: <合計容量>
  Max  : <最大サイズ>
  Count: <バッファ数>
 
<使用サイズ>  :  ダイレクトバッファの使用サイズ
<合計容量>    :  ダイレクトバッファの合計容量
<最大サイズ>  :  ダイレクトバッファの最大値
<バッファ数>  :  ダイレクトバッファの数

(47) マシン情報

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

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

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

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

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

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

(50) エラーリポート出力の完了

エラーリポートの出力が完了したことを示すため,最後に次の内容が出力されます。

END.