Core File Format
目的
エラーが発生したときのプロセスのイメージが入っています。
説明
プロセスによって割り振られる共用メモリーは、オプションでコア・ファイルから省略することもできます。 このデータは、 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_ フラグ | コア・ダンプ・タイプを記述するビット・フィールド。 ビットの意味は次のとおりです。
|
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 テーブルの開始位置までのオフセット |