Core File Format

目的

エラーが発生したときのプロセスのイメージが入っています。

説明

さまざまなエラーが発生すると、 . コア ファイルが現行ディレクトリーに作成されます。 メモリー・アドレス違反、正しくない命令、バス・エラー、およびユーザー生成の終了シグナルなどのエラーは、通常、この コア・ダンプの原因となります。 作成される コア ファイルには、終了したプロセスのメモリー・イメージが含まれます。 障害のあるプロセスがマルチスレッドであり、現在の コア サイズ ulimit がデータ・セクションのダンプに必要なサイズより小さい場合は、障害のあるスレッド・スタック域のみがデータ・セクションからダンプされます。
注: コア・ダンプ・ファイルには、 chcore コマンドを使用して固有の名前を付けることができます。 デフォルトの動作は、 AIX® オペレーティング・システムの以前のバージョンと同じです。

プロセスによって割り振られる共用メモリーは、オプションでコア・ファイルから省略することもできます。 このデータは、 CORE_NOSHM 環境変数がエクスポートされた場合にのみ省略されます。 デフォルトでは、すべての共有メモリーがコア・ファイルに組み込まれます。 CORE_NOSHM 変数は任意の値に設定できます。

固有コア・ファイルの命名は、環境変数 CORE_NAMING がエクスポートされた場合にのみ有効になります。 デフォルト名は、以前のリリースと同様に core です。 変数の値は trueに設定する必要があります。

コア・ダンプの内容は、 コア ファイル内で以下のように順次編成されます。

項目 説明
コア・ヘッダー コア・ダンプに関する基本情報を定義します。これには、残りのコア・ダンプ情報を見つけるためのオフセットが含まれます。
ルディンフォ 構造 ローダー情報を定義します。
MSTSAVE 構造 カーネル・スレッド状態情報を定義します。 障害のあるスレッド MSTSAVE 構造体は直接コア・ヘッダーに保管されるため、追加の構造体はマルチスレッド・プログラムの場合にのみここに保管されます。
デフォルト・ユーザー・スタック コア・ダンプ時のユーザー・スタックのコピーが含まれます。
デフォルトのデータ域 (オプション) ユーザー・データ・セクションが含まれます。
メモリー・マップ領域 (オプション) 匿名でマップされた領域が含まれます。
VM_INFO 構造 (オプション) メモリー・マップ領域のオフセットおよびサイズ情報が含まれます。

デフォルトでは、ユーザー・データは匿名でマップされた領域であり、 VM_INFO 構造はコア・ダンプに含まれません。 この部分的なコア・ダンプには、現行プロセス・スタック、スレッド・スタック、スレッド MSTSAVE 構造、ユーザー構造、および障害発生時のレジスターの状態が含まれます。 部分的なコア・ダンプには、スタック・トレースバックのための十分な情報が含まれています。 コア・ダンプのサイズは、 SetrLimit サブルーチンによって制限することもできます。

フル・コア・ダンプを使用可能にするには、フル・コア・ダンプを生成するシグナルの 署名アクション サブルーチンで 全ダンプ (SA_FULLDUMP) フラグを設定します。 コアのダンプ時にこのフラグが設定されると、データ・セクションは匿名でマップされた領域であり、 VM_INFO 構造がコア・ダンプに組み込まれます。

コア・ファイルは、以下の方法でダンプされます。
  • ダンプされたすべてのコアは、実行中のプロセスのコンテキスト内にあります。 これらは、プロセスの実効ユーザー ID (UID) およびグループ ID (GID) と一致する所有者およびグループとともにダンプされます。 この UID/GID ペアに、標準コア・パス・プロシージャーに従って決定されたターゲット・ディレクトリーへの書き込み許可がない場合、コア・ファイルはダンプされません。
  • 実ユーザー ID (RUID) が root の場合、コア・ファイルは常にダンプできますが、モードは 0600 です。
  • 実効ユーザー ID (EUID) が実ユーザー ID (RUID) と一致し、実効グループ ID (EGID) が資格情報のグループ・リスト内のいずれかのグループと一致する場合、コア・ファイルは 0600 の許可でダンプされます。
  • EUID が RUID と一致するが、EGID が資格情報のグループ・リスト内のどのグループとも一致しない場合、コア・ファイルはダンプできません。 有効ユーザーは、アクセス権限のないデータを表示できません。
  • EUID が RUID と一致しない場合、コア・ファイルをダンプできるのは、 SyscorePath コマンドを使用してコア・ディレクトリーを設定した場合のみです。 これにより、コア・ファイルを除去できないような方法で、コア・ファイルが現行作業ディレクトリーまたはユーザー固有のコア・ディレクトリーのいずれかにダンプされないようにします。 コアは 0600 のモードでダンプされます。 SyscorePath コマンドを使用してコア・ディレクトリーを設定していない場合、コアはダンプされません。

コア・ヘッダーのフォーマットは、 core_dump 構造体 ( core.h ヘッダー・ファイル内) によって定義されます。この構造体は以下のように編成されています。

項目 フィールド名 説明
char C_SIGNO エラーの原因となったシグナルの番号。
char C_ フラグ コア・ダンプ・タイプを記述するビット・フィールド。 ビットの意味は次のとおりです。
フル・コア
コアにデータ・セクションが含まれている (0x01)
CORE_VERSION_1
コアは AIX バージョン 4 以上によって生成されました (0x02)
MST が有効
コアに mstsave 構造が含まれています (0x04)
IGDATA の呼び出し (CORE_BIGDATA)
コアにビッグデータが含まれる (0x08)
UBLOCK_ 有効
core には u_block 構造体 (0x10) が含まれています
タック有効
core にはユーザー・スタック (0x20) が含まれます
LE_VALID (E)
コアに少なくとも 1 つのモジュールが含まれている (0x40)
CORE_TRUNC (レコードの削除)
コアが切り捨てられました (0x80)
ushort c_entries コア・ダンプ・モジュールの数
構造 ld_info * C_ タブ コア・テーブルの先頭までのオフセット
caddr_t C_ スタック ユーザー・スタックの先頭までのオフセット
int C_ サイズ ユーザー・スタックのサイズ
構造 mstsave MST 障害のある mst のコピー
struct ユーザー C_U ユーザー構造体のコピー
int c_nmsts 以下によって参照される MSTSAVE 構造の数c_mstsフィールド
struct mstsave * c_msts 他のスレッドの MSTSAVE 構造体へのオフセット
int データ・サイズ データ領域のサイズ。
caddr_t C_ データ ユーザー・データへのオフセット
int c_vmregions 匿名でマップされた領域の数
struct vm_info * C_VMM vm_info テーブルの開始位置までのオフセット