アプリケーション検証ツール - 停止コード - 基本

次の停止コードは、テストの基本セットに含まれています。

例外の停止の詳細

非実行可能メモリでコードの実行を試みます (最初のチャンス)。

考えられる原因

この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには: $ u parameter2 - 原因コード $ .exr parameter3 を組み立てる - 例外情報を表示します。$ .cxr parameter4 の後に kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - アクセス中のアドレス。
  • Parameter 2 - 無効なアクセスを実行しているコード。
  • Parameter 3 - 例外レコード。 .exr を使用して表示します。
  • Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。

追加情報
  • テスト レイヤー: 例外
  • 停止 ID: FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • ストップコード: 650NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ハンドル停止の詳細

現在のスタック トレースのハンドル例外が無効です。

考えられる原因

スタックの上部にある関数がシステム ルーチンに無効なハンドルを渡した場合、この停止が生成されます。 通常、単純な kb コマンドは、渡されたハンドルの値を明らかにします (通常は最初のパラメーターのいずれかである必要があります)。 値が null の場合、これは明らかに間違っています。 値が問題ない場合は、!htrace デバッガー拡張機能を使用して、このハンドル値に関連する操作の履歴を取得する必要があります。 ほとんどの場合、ハンドル値は閉じられた後に使用される必要があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 例外コード
  • Parameter 2 - 例外レコード。 .exr を使用して表示します。
  • Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: INVALID_HANDLE
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスタック トレースに使用されている TLS インデックスが無効です。

考えられる原因

スタック上部にある関数がTLS システム ルーチンに無効な TLS インデックスを渡した場合にこの停止が生成されます。 通常、単純な kb コマンドは、何が間違っているかを明らかにします。 ここでの一般的なバグは、TlsAlloc を呼び出す代わりに、TLS インデックスの特定の値を想定することです。 これは、常に値 N を取得するため、TlsAlloc を呼び出す必要がない、または初期化されていない変数のためにより頻繁に呼び出す必要がないと考えることで発生する可能性があります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - TLS インデックスが無効です。
  • パラメーター 2 - インデックスの下位部分が必要です。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: INVALID_TLS_VALUE
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

WaitForMultipleObjects 呼び出しのパラメーターが無効です。

考えられる原因

この停止は、待機するハンドルの配列のアドレスとして NULL を持つ WaitForMultipleObjects というスタックの上部にある関数が、ハンドルの数として 0 を指定した場合に生成されます。 単純な kb コマンドを実行すると、この API を正しく呼び出す関数が表示されません。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - オブジェクト ハンドル ベクターのアドレス。
  • パラメーター 2 - ハンドルの数。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: INCORRECT_WAIT_CALL
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

パラメーターとして渡される NULL ハンドル。 有効なハンドルを使用する必要があります。

考えられる原因

スタックの上部にある関数がシステム ルーチンにNULL ハンドルを渡した場合、この停止が生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: NULL_HANDLE
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

DllMain でスレッド ハンドルを待機しています。

考えられる原因

この停止は、現在のスレッドが現在のプロセスで読み込まれた DLL の DllMain 関数内でコードを現在実行しており、WaitForSingleObject または WaitForMultipleObjects を呼び出して、同じプロセス内のスレッド ハンドルを待機する場合に生成されます。 2 番目のスレッドが終了しない限り、スレッド ハンドルは通知されないため、デッドロックにつながる可能性が最も高くなります。 2 番目のスレッドが ExitThread を呼び出すと、DLL ローダー ロックの取得が試行され、現在のプロセス内のすべての DLL に対して DllMain (DLL_THREAD_DETACH) が呼び出されます。 ただし、ローダー ロックは最初のスレッド (スレッド ハンドルで待機しているスレッド) によって所有されているため、2 つのスレッドはデッドロックします。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - スレッド ハンドル。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: WAIT_IN_DLLMAIN
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ハンドルのオブジェクトの種類が正しくありません。

考えられる原因

この停止は、現在のスレッドが、正しくないオブジェクト型のオブジェクトへのハンドルを使用して API を呼び出している場合に生成されます。 たとえば、セマフォ ハンドルをパラメーターとして SetEvent を呼び出すと、この停止が生成されます。 この停止をデバッグするには、 $ kb - 現在のスタック トレースを表示します。 原因は、おそらくverifier.dllを呼び出しているDLLです。$ du parameter2 - ハンドルの実際の型を表示します。 ハンドル値は parameter1 です。 上の例では、セマフォが表示されます。 $ du parameter3 - API で予期されるオブジェクトの種類を表示します。 上記の例では、この名前は Event になります。 $ !htrace parameter1 は、このハンドルに対する最近のオープン/クローズ操作のスタック トレースを表示するため、役に立つ場合があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - ハンドル値。
  • Parameter 2 - オブジェクト型名。 du を使用して表示する
  • Parameter 3 - オブジェクト型名が必要です。 du を使用して表示する
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ハンドル
  • 停止 ID: INCORRECT_OBJECT_TYPE
  • ストップコード: 300NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ停止の詳細

不明なエラー。

考えられる原因

このメッセージは、発生したエラーを他の方法で分類できない場合に発生する可能性があります。 現時点では使用されていません。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません
  • Parameter 2 - 使用されていません
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: UNKNOWN_ERROR
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクセス違反の例外。

考えられる原因

これは、最も一般的なアプリケーション検証ツールの停止です。 通常、これはバッファー オーバーラン エラーが原因で発生します。 ヒープ検証ツールは、ヒープ割り当ての最後にアクセス不可能なページを配置します。バッファー オーバーランでは、このページに触れることで例外が発生します。 この停止をデバッグするには、例外の原因となったアクセス アドレスを特定し、次のデバッガー コマンドを使用します。!heap -p -a ACCESS_ADDRESSこのコマンドは、エラーの性質とオーバーランされるヒープ ブロックの詳細を示します。 また、ブロック割り当てのスタック トレースも提供されます。 この停止には、複数の他の原因が考えられます。 たとえば、解放された後にヒープ ブロックにアクセスする場合などです。 この場合も、同じデバッガー コマンドが役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 例外の原因となっているアドレスが無効です
  • Parameter 2 - 無効なアクセスを実行しているコード アドレス
  • Parameter 3 - 例外レコード
  • Parameter 4 - コンテキスト レコード

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: ACCESS_VIOLATION
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

HEAP_NO_SERIALIZE フラグを使用して作成されたヒープ内のマルチスレッド アクセス。

考えられる原因

HEAP_NO_SERIALIZE フラグを使用して作成されたヒープは、2 つのスレッドから同時にアクセスすることはできません。 このような状況が検出されると、このメッセージが表示されます。 この状況がプログラムに入り込む一般的な方法は、シングルスレッド バージョンの C ランタイムとリンクすることです。 Visual C++ では、適切なフラグが使用されている場合に、このようなライブラリを静的にリンクできます。 その後、ユーザーはこの詳細を忘れて、複数のスレッドを使用します。 バグは、神秘的なデータの破損として表示されるため、実際の生活の中でデバッグすることは非常に困難です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 操作が発生するヒープ。
  • Parameter 2 - ヒープ クリティカル セクションの現在の所有者のスレッド ID。
  • Parameter 3 - ヒープを入力しようとしている現在のスレッドのスレッド ID。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: UNSYNCHRONIZED_ACCESS
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

極端なサイズ要求。

考えられる原因

HeapAlloc() または HeapReAlloc() 操作でブロックのサイズが妥当な値を超える場合、このメッセージが生成されます。 通常、この値は 32 ビット プラットフォームで0x80000000され、64 ビット プラットフォームでは大幅に大きくなります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 操作が発生するヒープ。
  • Parameter 2 - サイズが要求されました
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: EXTREME_SIZE_REQUEST
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

シグネチャが正しくないヒープ ハンドル。

考えられる原因

ヒープ構造にはマジック値のタグが付けられます。 ヒープ インターフェイスの呼び出しで使用されるヒープ ハンドルにこのパターンがない場合、この停止が生成されます。 このバグは、内部ヒープ構造が壊れた (ランダムな破損) か、単に偽の値がヒープ ハンドルとして使用されている場合に発生する可能性があります。 有効なヒープ ハンドル値の一覧を取得するには、次のデバッガー コマンドを使用します。!heap -p ヒープ操作で有効なヒープ ハンドルを別の有効なヒープ ハンドルに切り替えるだけの場合、この停止は取得されません (ハンドルは結局有効に見えます)。 ただし、ヒープ検証ツールはこの状況を検出し、SWITCHED_HEAP_HANDLE 停止で報告します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ヒープ インターフェイスの呼び出しで使用されるヒープ ハンドル
  • Parameter 2 - 使用されていません
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: BAD_HEAP_HANDLE
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ポインターが破損しているか、間違ったヒープを使用しています。

考えられる原因

通常、これは、ブロックが 1 つのヒープに割り当てられ、別のヒープで解放された場合に発生します。 !heap -p コマンドを使用して、有効なすべてのヒープ ハンドル値の一覧を取得します。 最も一般的な例は、malloc() を使用した msvcrt 割り当てと、HeapFree() を使用した kernel32 の割り当て解除のペアです。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - ロックが最初に割り当てられたヒープ。

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: SWITCHED_HEAP_HANDLE
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックは既に解放されています。

考えられる原因

この状況は、ブロックが 2 回解放された場合に発生します。 解放されたブロックは特別な方法でマークされ、しばらくの間、遅延空きキューに保持されます。 バグのあるプログラムがブロックをもう一度解放しようとすると、ブロックが遅延空きキューからデキューされておらず、そのメモリが他の割り当てに再利用されなかったと仮定してキャッチされます。 遅延解放キューの深さは何千ものブロックの順序であるため、ほとんどの倍の空き時間がキャッチされる可能性が高くなります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ブロックを所有するヒープのヒープ ハンドル。
  • Parameter 2 - ヒープ ブロックが再び解放されます。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: DOUBLE_FREE
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

破損したヒープ ブロック。

考えられる原因

これは、ヒープ ブロックの破損をより具体的なカテゴリに配置できない場合に発行される一般的なエラーです。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 予約済み

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_BLOCK
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

プロセス ヒープの破棄を試みます。

考えられる原因

既定のプロセス ヒープ (GetProcessHeap() インターフェイスによって返されるヒープ) を破棄しようとするとエラーになります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - HeapDestroy で使用されるヒープ ハンドル。
  • Parameter 2 - 使用されていません
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: DESTROY_PROCESS_HEAP
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ管理コードの実行中に予期しない例外が発生しました。

考えられる原因

この停止は、ヒープ マネージャー コードの実行中に、不正な状況でアクセス違反が発生した場合に生成されます。 HeapValidate() や HeapSize() を呼び出す場合など、問題ない状況はほとんどありません。 例外レコード情報 (3 番目のパラメーター) を使用して、例外の正確なコンテキストを検索できます。 これには、次のデバッガー コマンドを使用します。 $ .exr STOP-PARAMETER-2 $ .cxr STOP-PARAMETER-3 通常、この停止は、内部ヒープ構造にランダムな破損がある場合に発生する可能性があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 操作に関係するヒープ。
  • Parameter 2 - 例外レコード。
  • Parameter 3 - コンテキスト レコード。
  • パラメーター 4  例外 コード (C0000005 - アクセス違反)

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: UNEXPECTED_EXCEPTION
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロック ヘッダーの検証中に例外が発生しました。

考えられる原因

この状況は、ブロックの特定の種類の破損を実際に特定できない場合に発生します。 ほとんどの場合、この停止は、ヒープフリーに渡されたヒープ ブロック アドレスが、アクセスできないメモリ領域 (破損したポインター、初期化されていないポインターなど) を指している場合に発生します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ブロックを所有するヒープのヒープ ハンドル。
  • Parameter 2 - 破損しているヒープ ブロック。
  • Parameter 3 - ブロックのサイズ。サイズを決定できない場合は 0。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックの検証中に例外が発生しました。

考えられる原因

この状況は、ブロックの特定の種類の破損を実際に特定できない場合に発生します。 たとえば、ヒープの空き操作中に、アクセス不可能なメモリ領域を指すアドレスを渡すと、これを取得します。 これは、完全なページ ヒープ ブロック間でブロックが見つからず、ライト ページ ヒープ ブロックとしてプローブする場合にも、二重の空き状況で発生する可能性があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 予約済み。

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

解放後にヒープ ブロックが破損しました。

考えられる原因

この状況は、解放後にメモリ ブロックが書き込まれた場合に発生します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ブロックを所有するヒープのヒープ ハンドル。
  • Parameter 2 - 破損しているヒープ ブロック。
  • Parameter 3 - ブロックのサイズ。サイズを決定できない場合は 0。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_BLOCK_HEADER
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

解放されたヒープ ブロックの破損したインフィックス パターン。

考えられる原因

解放されたブロックはアクセス不可としてマークされる場合があり、それらに触れるプログラムがアクセスします (異なる検証ツールの停止)。 それ以外の場合 (ライト ページ ヒープ) では、ブロックはマジック パターンでマークされ、しばらくの間保持されます。 最終的には FIFO 形式でブロックが本当に解放されます。 現時点では、インフィックス パターンがチェックされ、変更されている場合は、この中断が発生します。 中断時のスタックは関係ありません。 間違っている可能性のあるコードをブロックとコード レビューの性質を確認する必要があります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ブロックを所有するヒープのヒープ ハンドル。
  • Parameter 2 - ヒープ ブロックが解放されます。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 予約済み。

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: CORRUPTED_FREED_HEAP_BLOCK
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックのサフィックス パターンが破損しています。

考えられる原因

通常、これはバッファー オーバーラン エラーで発生します。 アプリケーション検証ツールで、割り当ての最後にアクセス不可能なページが配置され、バッファー オーバーランによってアクセス違反が発生し、ヒープ ブロックの後にマジック パターンが続く場合があります。 ブロックが解放されたときにこのパターンが変更されると、この中断が発生します。 これらの中断は、破損が発生した実際の瞬間がないため、デバッグが非常に困難な場合があります。 空き時間 (ここで停止) と割り当てスタック トレース (!heap -p -a HEAP_ADDRESS) にアクセスできます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 予約済み。

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_BLOCK_SUFFIX
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックの開始スタンプが破損しています。

考えられる原因

これは、バッファー アンダーランで発生します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 破損スタンプ値。

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_BLOCK_START_STAMP
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックの終了スタンプが破損しています。

考えられる原因

これは、バッファー アンダーランで発生します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 破損スタンプ値。

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_BLOCK_END_STAMP
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロックのプリフィックス パターンが破損しています。

考えられる原因

これは、バッファー アンダーランで発生します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出しで使用されるヒープ ハンドル。
  • Parameter 2 - 操作に関係するヒープ ブロック。
  • パラメーター 3 - ヒープ ブロックのサイズ。
  • Parameter 4 - 予約済み。

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: CORRUPTED_HEAP_BLOCK_PREFIX
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスタック トレースに対する最初のチャンス アクセス違反。

考えられる原因

これは、最も一般的なアプリケーション検証ツールの停止です。 通常、これはバッファー オーバーラン エラーが原因で発生します。 ヒープ検証ツールは、ヒープ割り当ての最後にアクセス不可能なページを配置します。バッファー オーバーランでは、このページに触れることで例外が発生します。 この停止をデバッグするには、例外の原因となったアクセス アドレスを特定し、次のデバッガー コマンドを使用します。!heap -p -a ACCESS_ADDRESSこのコマンドは、エラーの性質とオーバーランされるヒープ ブロックの詳細を示します。 また、ブロック割り当てのスタック トレースも提供されます。 この停止には、複数の他の原因が考えられます。 たとえば、解放された後にヒープ ブロックにアクセスする場合などです。 この場合も、同じデバッガー コマンドが役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 例外の原因となっているアドレスが無効です。
  • Parameter 2 - 無効なアクセスを実行しているコード アドレス。
  • Parameter 3 - 例外レコード。
  • Parameter 4 - コンテキスト レコード。

追加情報
  • テスト レイヤー: ヒープ
  • Stop ID: FIRST_CHANCE_ACCESS_VIOLATION
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

プロセス ヒープ リストの数が無効です。

考えられる原因

このメッセージは、GetProcessHeaps の呼び出し中にページ ヒープ マネージャーが内部の不整合を検出した場合に発生する可能性があります。 これは、プロセス空間のランダムな破損が原因で発生する可能性があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 実際のヒープ数。
  • Parameter 2 - ページのヒープ数。
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ヒープ
  • 停止 ID: CORRUPTED_HEAP_LIST
  • ストップコード: 0NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

リーク停止の詳細

ヒープ割り当てがリークされました。

考えられる原因

この停止は、リソースの所有中に 割り当ての所有者 dll が動的にアンロードされた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 漏えいした割り当てのアドレス。 !heap -p -a <アドレス> を実行して、 割り当てに関する追加情報を取得します。
  • パラメーター 2  - 割り当てスタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • Stop ID: ALLOCATION
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ハンドルがリークされました。

考えられる原因

この停止は、リソースの所有中に ハンドルの所有者 dll が動的にアンロードされた場合に生成されます。 この停止をデバッグするには、!htrace parameter1 を実行してハンドルに関する追加情報を取得します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - リークされたハンドルの値。 ハンドル トレースが有効になっている場合は、!htrace <ハンドル> を実行してハンドルに関する追加情報を取得します。
  • パラメーター 2  - 割り当てスタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • Stop ID: HANDLE
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

HKEY がリークされました。

考えられる原因

この停止は、リソースの所有中に レギストリ キーの所有者 dll が動的にアンロードされた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - リークした HKEY の値。
  • パラメーター 2  - 割り当てスタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • Stop ID: REGISTRY
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

仮想予約がリークされました。

考えられる原因

この停止は、リソースの所有中に 仮想予約の所有者 dll が動的にアンロードされた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - リークした予約アドレス。
  • パラメーター 2  - 割り当てスタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • Stop ID: VIRTUAL_RESERVATION
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

BSTR がリークされました。

考えられる原因

この停止は、リソースの所有中に SysString の所有者 dll が動的にアンロードされた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - リークされた BSTR のアドレス。 !heap -p -a <アドレス> を実行して、 割り当てに関する追加情報を取得します。
  • パラメーター 2  - 割り当てスタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • Stop ID: SYSSTRING
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

電源通知の登録が解除されませんでした。

考えられる原因

この停止は、dll が電源通知に登録され、登録を解除せずに動的にアンロードされた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 電源通知登録のアドレス。
  • パラメーター 2 - 登録スタック トレースへのアドレス。 dps <アドレス> を実行して、割り当てスタックを表示します。
  • Parameter 3 - 所有者 dll 名のアドレス。 du <アドレス> を実行して dll 名を読み取る。
  • 所有者 dll のパラメーター 4  ベース 。 .reload <dll_name> = <address> を実行して、所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。

追加情報
  • テスト レイヤー: リーク
  • 停止 ID: POWER_NOTIFICATION
  • ストップコード: 900NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ロック停止の詳細

スレッドはクリティカル セクションを所有できません。

考えられる原因

この停止は、スレッド (スレッド ID がパラメーター 1) が終了、中断、またはクリティカル セクションを保持できない状態 (ワーカー スレッドが作業項目を終了) している場合に生成されます。 現在のスレッドが原因です。 この停止をデバッグするには、次のデバッガー コマンドを使用します。 $ kb - 現在のスタック トレースを取得します。 現在のスレッドがクリティカル セクションの所有者である場合は、おそらく ExitThread を呼び出しています。 終了する前に、現在のスレッドがクリティカル セクションを解放している必要があります。 現在のスレッドが TerminateThread または SuspendThread を呼び出している場合は、クリティカル セクションを保持しているスレッドに対してこれを行わないでください。 $ !cs -s parameter2 - この重要なセクションに関するダンプ情報。 $ ln parameter2 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、リークしたクリティカル セクションを特定するのに役立ちます。 $ dps parameter4 - このクリティカル セクション初期化のスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - スレッド ID。
  • パラメーター 2 - Critical セクション アドレス。
  • Parameter 3 - Critical セクションのデバッグ情報アドレス。
  • Parameter 4 - Critical セクション初期化スタック トレース。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: EXIT_THREAD_OWNS_LOCK
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクティブなクリティカル セクションを含む DLL のアンロード。

考えられる原因

この停止は、DLL にクリティカル セクションを含むグローバル変数があり、DLL がアンロードされていてもクリティカル セクションが削除されていない場合に生成されます。 この停止をデバッグするには、次のデバッガー コマンドを使用します。 $ du parameter3 - 犯人 DLL の名前をダンプします。 $ .reload dllname または .reload dllname = parameter4 - その DLL のシンボルを再読み込みします。 $ !cs -s parameter1 - この重要なセクションに関するダンプ情報。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、リークしたクリティカル セクションを特定するのに役立ちます。 $ dps parameter2 - このクリティカル セクション初期化のスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - Critical セクション初期化スタック トレース。
  • Parameter 3 - DLL 名アドレス。
  • Parameter 4 - DLL ベースアドレス。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_IN_UNLOADED_DLL
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクティブなクリティカル セクションを含むヒープ ブロックを解放する。

考えられる原因

この停止は、ヒープ割り当てにクリティカル セクションが含まれており、割り当てが解放され、クリティカル セクションが削除されていない場合に生成されます。 この停止をデバッグするには、次のデバッガー コマンドを使用します。 $ !cs -s parameter1 - この重要なセクションに関する情報をダンプします。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、リークしたクリティカル セクションを特定するのに役立ちます。 $ dps parameter2 - このクリティカル セクション初期化のスタック トレースをダンプします。 $ parameter3 と parameter4 は、このヒープ ブロックが割り当てられた場所を理解するのに役立ちます (割り当てのサイズはおそらく重要です)。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - Critical セクション初期化スタック トレース。
  • Parameter 3 - ヒープブロックアドレス。
  • Parameter 4 - ヒープブロックサイズ。

追加情報
  • テスト レイヤー: ロック
  • Stop ID: LOCK_IN_FREED_HEAP
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

二重初期化または破損したクリティカル セクション。

考えられる原因

通常、この停止は、クリティカル セクションが複数回初期化されている場合に生成されます。 この場合、parameter3 と parameter4 は、これらの 2 つの初期化のスタック トレース アドレスです。 重要なセクションまたはそのデバッグ情報構造が破損している場合は、この停止を取得できる場合もあります。 この 2 番目のケースでは、parameter3 と parameter4 が無効で役に立たない可能性があります。 この停止をデバッグするには: $ !cs -s -d parameter2 - このクリティカル セクションに関するダンプ情報。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、グローバル変数の場合にクリティカル セクションを識別するのに役立ちます。 $ dps parameter3 と dps parameter4 - このクリティカル セクションを初期化するための 2 つのコード パスを識別します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - アクティブ なリストで見つかったデバッグ情報構造のアドレス。
  • Parameter 3 - 最初の初期化スタック トレース。
  • Parameter 4 - 秒の初期化スタックトレース。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_DOUBLE_INITIALIZE
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクティブなクリティカル セクションを含む空きメモリ。

考えられる原因

この停止は、クリティカル セクションを含むメモリが解放されたが、DeleteCriticalSection を使用してクリティカル セクションが削除されていない場合に生成されます。 この停止をデバッグするには、次のデバッガー コマンドを使用します。 $ !cs -s -d parameter2 - この重要なセクションに関する情報をダンプします。 $ dps parameter3 - このクリティカル セクションを初期化するためのコード パスを識別します。 ほとんどの場合、ロック検証ツールは、ヒープ割り当て、DLL 範囲、仮想メモリの割り当て、マップされたメモリ範囲に含まれる重大なセクションがすぐにリークしたことを検出し、このような場合に異なる停止を発行します。 そのため、この検証ツールの停止に残っているケースはほとんどありません。 ロックは、カーネル モード コードによって解放されたメモリ範囲にあるか、VirtualFreeEx などの API によってプロセス間で解放されている必要があります。 通常、この停止は、デバッガー コンソールで 'g' を押して前の停止 (LOCK_IN_FR Enterprise Edition D_HEAPやLOCK_IN_UNLOADED_DLLなど) が継続された場合に発生します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - Critical セクションのデバッグ情報アドレス。
  • Parameter 3 - Critical セクション初期化スタック トレース。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ロック
  • Stop ID: LOCK_IN_FREED_MEMORY
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

破損したクリティカル セクション。

考えられる原因

この停止は、クリティカル セクションの DebugInfo フィールドが解放されたメモリを指している場合に生成されます。 通常、別の有効な DebugInfo 構造体がアクティブなクリティカル セクションの一覧にあります。 破損することなく、2 つのポインターは同じにする必要があります。 この停止をデバッグするには、次のデバッガー コマンドを使用します。 $ !cs -s -d parameter3 - アクティブなリストにあるデバッグ情報構造の現在の内容に基づいて、この重要なセクションに関する情報をダンプします (この構造体はほとんど破損しないため、通常、この情報は信頼できます)。 $ !cs -s parameter1 - クリティカル セクション構造の現在の内容に基づいて、このクリティカル セクションに関する情報をダンプします (構造は既に破損しているため、この情報が信頼できない場合があります)。 $ dps parameter4 - このクリティカル セクションを初期化するためのコード パスを識別します。 アドレス パラメーター 1 にクリティカル セクションをダンプし、破損パターンを探します。 ntdll.dl に適したシンボルを使用すると、$dt ntdll!_RTL_CRITICAL_Standard Edition CTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_Standard Edition CTION_DEBUG DEBUG_ADDRESS コマンドを使用できます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - このクリティカル セクションのデバッグ情報アドレスが無効です。
  • パラメーター 3 - アクティブ なリストで見つかったデバッグ情報のアドレス。
  • Parameter 4 - 初期化スタック トレース。

追加情報
  • テスト レイヤー: ロック
  • Stop ID: LOCK_CORRUPTED
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクション所有者スレッドが無効です。

考えられる原因

この停止は、現在のコンテキストで所有者スレッド ID が無効な場合に生成されます。 この停止をデバッグするには: $ !cs -s parameter1 - このクリティカル セクションに関するダンプ情報。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、クリティカル セクションを特定するのに役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - 所有スレッド。
  • Parameter 3 - 所有スレッドが必要です。
  • Parameter 4 - クリティカル セクションのデバッグ情報アドレス。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_INVALID_OWNER
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクションの再帰数が無効です。

考えられる原因

この停止は、クリティカル セクション構造の再帰カウント フィールドが現在のコンテキストで無効な場合に生成されます。 この停止をデバッグするには: $ !cs -s parameter1 - このクリティカル セクションに関するダンプ情報。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、クリティカル セクションを特定するのに役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - 再帰数。
  • パラメーター 3 - 予期される再帰数。
  • Parameter 4 - クリティカル セクションのデバッグ情報アドレス。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_INVALID_RECURSION_COUNT
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ロックカウントが無効なクリティカル セクションを削除しています。

考えられる原因

この停止は、クリティカル セクションが削除された場合、またはクリティカル セクションが初期化されていない場合に、スレッドが所有している場合に生成されます。 この停止をデバッグするには: $ !cs -s parameter1 - このクリティカル セクションに関するダンプ情報。 所有スレッドが 0 の場合、クリティカル セクションは初期化されていません。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、クリティカル セクションを特定するのに役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - ロック数。
  • パラメーター 3 - 予期されるロック数。
  • Parameter 4 - 所有スレッド。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_INVALID_LOCK_COUNT
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクションが過剰にリリースまたは破損しています。

考えられる原因

この停止は、クリティカル セクションが現在のスレッドによって取得された回数よりも多く解放された場合に生成されます。 この停止をデバッグするには: $ !cs -s parameter1 - このクリティカル セクションに関するダンプ情報。 $ !cs -s -d parameter4 - この重要なセクションに関するダンプ情報。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、クリティカル セクションを特定するのに役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - ロック数。
  • パラメーター 3 - 予期されるロック数。
  • Parameter 4 - クリティカル セクションのデバッグ情報アドレス。

追加情報
  • テスト レイヤー: ロック
  • Stop ID: LOCK_OVER_RELEASED
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクションが初期化されていません。

考えられる原因

この停止は、クリティカル セクションが初期化されず、または削除された後に使用された場合に生成されます。 この停止をデバッグするには:$ ln parameter1 - クリティカルセクションのアドレスの近くにシンボルを表示します。 これは、クリティカル セクションを特定するのに役立ちます。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - クリティカル セクションのデバッグ情報アドレス。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_NOT_INITIALIZED
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクションは既に初期化されています。

考えられる原因

この停止は、クリティカル セクションが現在のスレッドによって再初期化された場合に生成されます。 この停止をデバッグするには、$ !cs -s parameter1 または !cs -s -d parameter2 - このクリティカル セクションに関する情報をダンプします。 $ ln parameter1 - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、グローバル変数の場合にクリティカル セクションを識別するのに役立ちます。 $ dps parameter3 - このクリティカル セクションの最初の初期化のコード パスを識別します。 $ kb - 現在のスタック トレースを表示するには、この重要なセクションを再初期化します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - クリティカル セクションのデバッグ情報アドレス。
  • Parameter 3 - 最初の初期化スタック トレース。 NULL 以外の場合は dps を使用してダンプする
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_ALREADY_INITIALIZED
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクティブなクリティカル セクションを含む仮想メモリを解放する。

考えられる原因

この停止は、現在のスレッドがアクティブなクリティカル セクションを含むメモリ ブロックで VirtualFree を呼び出している場合に生成されます。 アプリケーションは、このメモリを解放する前に、このクリティカル セクションで DeleteCriticalSection を呼び出す必要があります。 $ kb - VirtualFree を呼び出している現在のスタック トレースを表示します。 考えられる原因は、VirtualFree を呼び出す DLL です。 $ !cs -s parameter1 - この重要なセクションに関するダンプ情報。 $ dps parameter2 - このクリティカル セクションの初期化のコード パスを識別します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - Critical セクション初期化スタック トレース。
  • Parameter 3 - メモリ ブロック アドレス。
  • Parameter 4 - メモリ ブロック サイズ。

追加情報
  • テスト レイヤー: ロック
  • Stop ID: LOCK_IN_FREED_VMEM
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アクティブなクリティカル セクションを含むメモリ領域のマッピングを解除します。

考えられる原因

この停止は、現在のスレッドがアクティブなクリティカル セクションを含むメモリ ブロックで UnmapViewOfFile を呼び出している場合に生成されます。 アプリケーションは、このメモリをアンマップする前に、このクリティカル セクションで DeleteCriticalSection を呼び出す必要があります。 $ kb - UnmapViewOfFile を呼び出している現在のスタック トレースを表示します。 考えられる原因は、UnmapViewOfFile を呼び出す DLL です。 $ !cs -s parameter1 - この重要なセクションに関するダンプ情報。 $ dps parameter2 - このクリティカル セクションの初期化のコード パスを識別します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - Critical セクション初期化スタック トレース。
  • Parameter 3 - メモリ ブロック アドレス。
  • Parameter 4 - メモリ ブロック サイズ。

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_IN_UNMAPPED_MEM
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスレッドは重要なセクションを所有していません。

考えられる原因

この停止は、現在のスレッドが LeaveCriticalSection を呼び出している場合に生成されますが、内部検証者のブックキーピングによると、重要なセクションは所有していません。 parameter2 がゼロの場合、おそらくこれは現在のスレッドのバグです。 入力しなかったクリティカル セクションを残そうとするか、同じクリティカル セクションに対して EnterCriticalSection と呼ばれるよりも多くの回数 LeaveCriticalSection を呼び出している可能性があります。 parameter2 が 0 でない場合 (負の整数)、内部検証ツールのデータ構造が破損している可能性があります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • パラメーター 2 - 現在のスレッドが所有するクリティカル セクションの数。
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: THREAD_NOT_LOCK_OWNER
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

別の DLL に対してプライベートなクリティカル セクションを使用する。

考えられる原因

この停止は、現在のスレッドが別の DLL 内に存在するプライベート ロックを使用しようとした場合に生成されます。 たとえば、a.dllは、ntdll.dll内で定義されたクリティカル セクションの入力を試みます。 プライベート ロックは DLL 間で使用できません。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Critical セクション アドレス。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_PRIVATE
  • ストップコード: 200NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

SRWLock 停止の詳細

SRW ロックが初期化されていません。

考えられる原因

この停止は、スレッドが初期化されていない SRW ロック (Param1) を使用しようとしている場合に生成されます。 $ kb - 現在のスタック トレースを取得します。 SRW ロックが使用されている場所です。 使用する前に、InitializeSRWLock を使用して SRW ロックを初期化する必要があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • Parameter 2 - 使用されていません
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: NOT_INITIALIZED
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

SRW ロックは既に初期化されています。

考えられる原因

この停止は、SRW ロック (Param1) が再初期化されている場合に生成されます。 SRW ロックが他のスレッドによってアクティブに使用されている場合、ロックを再初期化すると、ハングやクラッシュなど、アプリケーションによる予期しない動作が発生します。 SRW ロックが静的に初期化された場合、初期化スタック トレースに取得が表示される場合があります。 $ kb - 現在のスタック トレースを取得します。 ここで、SRW ロックが再初期化されます。 $ dps Param3 - SRW ロック初期化スタック トレースを取得します。 ロックが静的に初期化された場合、このスタック トレースに取得が表示される場合があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • Parameter 2 - SRW ロックを初期化したスレッドの ThreadId。
  • パラメーター 3 - 初期化スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが初期化された場所を確認します。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: ALREADY_INITIALIZED
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

SRW ロックでの取得リリースの不一致。

考えられる原因

この停止は、SRW ロック (Param1) が間違ったリリース API で解放されている場合に生成されます。 共有アクセス用に SRW ロックが取得され、排他リリース API を使用して解放されている場合、または SRW ロックが排他アクセス用に取得され、共有リリース API を使用してリリースされている場合。 これにより、ハングやクラッシュなど、アプリケーションによる予期しない動作が発生する可能性があります。 $ kb - 現在のスタック トレースを取得します。 ここで、間違った API を使用して SRW ロックが解放されます。 $ dps Param3 - SRW ロック取得スタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • Parameter 2 - SRW ロックを取得したスレッドの ThreadId。
  • パラメーター 3 - 取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: MISMATCHED_ACQUIRE_RELEASE
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

SRW ロックは、同じスレッドによって再帰的に取得されています。

考えられる原因

この停止は、SRW ロック (Param1) が同じスレッドによって再帰的に取得されている場合に生成されます。 これによりデッドロックが発生し、スレッドは無期限にブロックされます。 排他モードで SRW ロックを再帰的に取得すると、デッドロックが発生します。 共有モードで SRW ロックを再帰的に取得すると、排他アクセスを待機しているスレッドがある場合にデッドロックが発生します。 以下の例を考えてみましょう。 - スレッド A が共有モードで SRW ロックを取得します。 - スレッド B が排他モードで SRW ロックを取得しようとして待機します。 - スレッド A が共有モードで SRW ロックを再帰的に取得しようとします。 排他的待機者 (この場合は B) がない限り、これは成功します。 SRW ロックにはライター不足がないため、スレッド A はスレッド B の後ろで待機します。現在、スレッド B はスレッド A を待機し、スレッド A はスレッド B を待機しています。これにより、循環待機が発生し、デッドロックが発生します。 $ kb - 現在のスタック トレースを取得します。 これは、SRW ロックが再帰的に取得される場所です。 $ dps Param2 - 最初の取得のスタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • パラメーター 2 - 最初の取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: SRWLock
  • 停止 ID: RECURSIVE_ACQUIRE
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

終了中または終了中のスレッドは、SRW ロックを所有しています。

考えられる原因

この停止は、SRW ロック (Param1) を所有するスレッド (Param2) が終了または終了している場合に生成されます。 これにより、孤立した SRW ロックが発生し、このロックを取得しようとしているスレッドは無期限にブロックされます。 $ kb - 現在のスタック トレースを取得します。 これは、スレッドが終了中または終了中の場所です。 $ dps Param3 - SRW ロック取得スタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • Parameter 2 - 終了中または終了されるスレッドの ThreadId。
  • パラメーター 3 - 取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: SRWLock
  • 停止 ID: EXIT_THREAD_OWNS_LOCK
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

解放されている SRW ロックは、このスレッドによって取得されませんでした。

考えられる原因

この停止は、ロックを取得しなかったスレッド (Param2) によって SRW ロック (Param1) が解放されている場合に生成されます。 これは、正しく取得するのが難しく、アプリケーションによる予期しない動作につながる可能性がある不適切なプログラミング手法を表しています。 $ kb - 現在のスタック トレースを取得します。 これは、スレッドが取得しなかった SRW ロックを解放する場所です。 $ dps Param4 - SRW ロック取得スタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • Parameter 2 - 現在のスレッド ID。
  • Parameter 3 - SRW ロックを取得したスレッドの ThreadId。
  • パラメーター 4 - 取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: INVALID_OWNER
  • ストップコード: 250NAN
  • 重要度: 警告
  • 1 回限りエラー: 
  • エラー レポート: なし
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

解放されるメモリには、アクティブな SRW ロックが含まれています。

考えられる原因

この停止は、解放されているメモリ アドレス (Param1) に、まだ使用中のアクティブな SRW ロックが含まれている場合に生成されます。 これにより、クラッシュやハングなど、アプリケーションによる予期しない動作が発生する可能性があります。 $ kb - 現在のスタック トレースを取得します。 ここで、アクティブな SRW ロックを含むメモリが解放されます。 $ dps Param4 - SRW ロック取得スタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • パラメーター 2 - 解放されるメモリのアドレス。
  • Parameter 3 - SRW ロックを取得したスレッドの ThreadId。
  • パラメーター 4 - 取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: IN_FREED_MEMORY
  • ストップコード: 250NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

アンロードされる DLL には、アクティブな SRW ロックが含まれています。

考えられる原因

この停止は、アンロード中の DLL (Param2) に、まだ使用中のアクティブな SRW ロック (Param1) が含まれている場合に生成されます。 これにより、クラッシュやハングなど、アプリケーションによる予期しない動作が発生する可能性があります。 $ kb - 現在のスタック トレースを取得します。 ここで、アクティブな SRW ロックを含む DLL がアンロードされます。 $ du Param2 - アンロードされている DLL の名前を検索します。 $ dps Param4 - SRW ロック取得スタック トレースを取得します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - SRW ロック
  • パラメーター 2  - アンロードされる DLL の名前のアドレス。 du <アドレス> を使用して名前を確認します。
  • Parameter 3 - SRW ロックを取得したスレッドの ThreadId。
  • パラメーター 4 - 取得スタック トレースのアドレス。 dps <アドレス> を使用して、SRW ロックが取得された場所を確認します。

追加情報
  • テスト レイヤー: SRWLock
  • Stop ID: IN_UNLOADED_DLL
  • ストップコード: 250NAN
  • 重要度: 警告
  • 1 回限りエラー: 
  • エラー レポート: なし
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

メモリ停止の詳細

サイズまたは開始アドレスが無効な仮想メモリ ブロックを解放します。

考えられる原因

この停止は、アプリ検証ツールが、無効な開始アドレスまたはメモリ割り当てのサイズを持つ VirtualFree または DLL アンロードを検出した場合に生成されます。 DLLアンロードの場合、これはおそらく読み込まれたDLLリスト内のメモリ破損を意味します。 この停止をデバッグするには、現在のスタック トレースと、解放されようとしているメモリ アドレスとサイズを調べて、無効な理由を判断してみてください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 割り当てベース アドレス。
  • Parameter 2 - メモリ領域のサイズ。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_FREEMEM
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

仮想アロケーション呼び出しが正しくありません。

考えられる原因

この停止は、アプリ検証ツールが、無効な開始アドレスまたはメモリ割り当てのサイズを持つ VirtualAlloc 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) と、割り当てられようとしているメモリ アドレスとサイズを調べて、無効な理由を判断してみてください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 割り当てベース アドレスへのポインター。
  • パラメーター 2 - メモリ領域サイズへのポインター。
  • Parameter 3 - 使用されていません
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: INVALID_ALLOCMEM
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

マップ ビューの呼び出しが正しくありません。

考えられる原因

この停止は、無効なベース アドレスまたはマッピングのサイズを持つ MapViewOfFile 呼び出しをアプリ検証ツールが検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) と、マッピングされようとしているメモリ アドレスとサイズを調べて、無効な理由を判断してみてください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - ベース アドレスのマッピングへのポインター。
  • パラメーター 2 - 表示サイズへのポインター。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: INVALID_MAPVIEW
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

無効なアドレスをプローブしています。

考えられる原因

この停止は、アプリ検証ツールが、プローブするメモリ バッファーの無効なアドレス (通常のユーザー モード アドレスではなくカーネル モード アドレスなど) を持つ IsBadXXXPtr 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が無効なアドレスで終わった理由を特定してみてください。 多くの場合、アドレスは、初期化されていないポインターなど、単純な偽です。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 開始アドレス。
  • Parameter 2 - メモリ ブロック サイズ。
  • パラメーター 3 - アドレスが無効です。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: PROBE_INVALID_ADDRESS
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

空きメモリのプローブ。

考えられる原因

この停止は、アプリ検証ツールが空きメモリ割り当ての IsBadXXXPtr 呼び出しを検出した場合に生成されます。 これは非常に悪いです。これは、他の場合には、このメモリが他の割り当てのために既に再利用されている可能性があるためです。 現在のコード パス (kb) はそのメモリを所有していないため、他のユーザーのメモリが壊れ、悲惨な影響を受ける可能性があります。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元がフリー メモリのプローブで終わった理由を特定してみてください。 アドレスは、単純な偽の (初期化されていないポインターなど) か、既に解放されているメモリである可能性があります。 メモリが VirtualFree または UnmapViewOfFile API のいずれかによって既に解放されている場合、'!avrf -vs -a parameter3' は、そのアドレスを割り当てた/解放したコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 これにより、このメモリを解放したスタック トレースが表示される場合があります。 多くの場合、メモリは既に解放されたヒープ割り当てです。 その可能性をチェックするために、'!avrf -hp -a parameter3' は、ヒープとの間でそのアドレスを割り当てたり解放したりしたコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 開始アドレス。
  • Parameter 2 - メモリ ブロック サイズ。
  • パラメーター 3 - 空きメモリ ページのアドレス。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: PROBE_FREE_MEM
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ガード ページのプローブ。

考えられる原因

この停止は、アプリ検証ツールが、少なくとも 1 つのGUARD_PAGEを含むメモリ割り当ての IsBadXXXPtr 呼び出しを検出した場合に生成されます。 このGUARD_PAGEがスレッドの現在のスタックの末尾である可能性が非常に高いため、これは非常に悪いです。 MSDN ライブラリに記載されているように、無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が GUARD_PAGE のプローブで終わった理由を特定してみてください。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 開始アドレス。
  • Parameter 2 - メモリ ブロック サイズ。
  • パラメーター 3 - ガード ページのアドレス。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: PROBE_GUARD_PAGE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

NULL アドレスのプローブ。

考えられる原因

この停止は、アプリ検証ツールが NULL アドレスを持つ IsBadXXXPtr 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が NULL アドレスで終わった理由を特定してみてください。 これは通常、メモリ割り当て関数のいずれかの戻り値をチェックしていないユーザーの兆候です。 たとえば、次のコードは正しくありません。int メイン (void) { PVOID p; p = malloc (1024);使用 (p);return 0;} void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p は、ここで安全に使用できます。 } このコードは、int メイン (void) { PVOID p; p = malloc (1024);、(NULL == p)) { return -1; } のように書き直す必要があります。使用 (p);return 0;} void Use (PVOID p) { // // p は、ここで安全に使用できます。 // } MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: PROBE_NULL
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

無効な開始アドレスまたはサイズを持つメモリ ブロックのプローブ。

考えられる原因

この停止は、アプリのベリファイアが、無効な開始アドレス(通常のユーザーモードアドレスではなく、カーネルモードアドレスなど)を持つ IsBadXXXPtr 呼び出し、またはプローブされるメモリバッファの無効なサイズを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が無効なアドレスまたはサイズで終わった理由を特定してみてください。 多くの場合、アドレスまたはサイズは、初期化されていない変数など、単純な偽です。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 開始アドレス。
  • Parameter 2 - メモリ ブロック サイズ。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: PROBE_INVALID_START_OR_SIZE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

サイズまたは開始アドレスが無効な DLL をアンロードしています。

考えられる原因

この停止は、アプリ検証ツールが無効な開始アドレスまたは DLL メモリ範囲のサイズを持つ DLL アンロードを検出した場合に生成されます。 これはおそらく、読み込まれた内部ntdll.dll DLL リスト内のメモリ破損を意味します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - DLL のメモリ ベース アドレス。
  • Parameter 2 - DLL メモリ範囲のサイズ。
  • Parameter 3 - DLL 名アドレス。 du を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: INVALID_DLL_RANGE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスレッドのスタック アドレス範囲内のメモリ ブロックを解放する。

考えられる原因

この停止は、アプリ検証ツールが、現在のスレッドのスタック (!) の実際に一部であるメモリ ブロックに対して VirtualFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、VirtualFree を呼び出した関数が、メモリ ブロックが動的に割り当てられているか、マップされているが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 割り当てベース アドレス。
  • Parameter 2 - メモリ領域のサイズ。
  • Parameter 3 - スタックの下限アドレス。
  • Parameter 4 - スタックの上限アドレス。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: FREE_THREAD_STACK_MEMORY
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

VirtualFree 操作の FreeType パラメーターが正しくありません。

考えられる原因

この停止は、アプリ検証ツールが FreeType パラメーターの正しくない値を持つ VirtualFree を検出した場合に生成されます。 このパラメーターに使用できる値は、MEM_DECOMMITとMEM_RELEA Standard Editionの 2 つだけです。 これら 2 つを除く他の値で VirtualFree が呼び出されると、VirtualFree はメモリを解放できません。 この停止をデバッグするには、現在のスタック トレース (kb) を調べます。VirtualFree の呼び出し元が原因である可能性があります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アプリケーションで使用される値が正しくありません。
  • パラメーター 2 - 正しい値 1 が必要です。
  • パラメーター 3 - 正しい値 2 が必要です。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_FREE_TYPE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

既に空いている仮想メモリ ブロックを解放しようとしています。

考えられる原因

この停止は、アプリ検証ツールが既に空きアドレスの VirtualFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を確認し、メモリが既に空いているが、アプリケーションがもう一度解放しようとしている理由を判断してみてください。 '!avrf -vs -a parameter1' は、そのアドレスを割り当てたり解放したりしたコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 これにより、このメモリを解放したスタック トレースが表示される場合があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - メモリ ブロック アドレス。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: MEM_ALREADY_FREE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

VirtualFree (MEM_RELEASE) 操作の Size パラメーターが正しくありません。

考えられる原因

この停止は、アプリ検証ツールが dwSize パラメーターの 0 以外の値を持つ VirtualFree (MEM_RELEA Standard Edition) を検出した場合に生成されます。 MEM_RELEASE を使用する場合、このパラメーターに使用できる値は 0 のみです。 0 以外の他の値で VirtualFree が呼び出されると、VirtualFree はメモリを解放できません。 この停止をデバッグするには、現在のスタック トレース (kb) を調べます。VirtualFree の呼び出し元が原因である可能性があります。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アプリケーションで使用されるサイズが正しくありません。
  • パラメーター 2 - 正しいサイズ (0) が必要です。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_FREE_SIZE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

DLL エントリ ポイント ルーチンで予期しない例外が発生しました。

考えられる原因

この停止は、DLL のエントリ ポイント (DllMain) 関数で例外が発生している場合に生成されます。 これが悪い理由の一例は、DllMain(DLL_PROCESS_ATTACH) が例外を発生させている場合、Windows DLL ローダーは例外をキャッチして非表示にします。- DllMain(DLL_PROCESS_DETACH) を呼び出さずに DLL をアンロードします。 そのため、多くの場合、DLL は既にいくつかのリソースを割り当て、例外を発生させ、DllMain (DLL_PROCESS_DETACH) でこれらのリソースを解放する機会がありません。 この停止をデバッグするには: $ du parameter1 - DLL 名を表示します。$ .exr parameter2 - 例外情報を表示します。$ .cxr parameter3 の後に kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。$ parameter4 は内部検証ツール構造のアドレスであり、ほとんどの検証ツール ユーザーにとって意味はありません。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - DLL 名 (du を使用してダンプします)。
  • Parameter 2 - 例外レコード。 .exr を使用して表示します。
  • Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
  • Parameter 4 - 検証ツール dll 記述子

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: DLL_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

スレッド関数で予期しない例外が発生しました。

考えられる原因

この停止は、スレッド関数が例外を発生させている場合に生成されます。 プロセス全体が強制終了されるため、これは不適切です。 この停止をデバッグするには、例外の種類に対して $ parameter1 が重要な場合があります。 例えば、例外コードC0000005アクセス違反を意味します。$ .exr parameter2 - 例外情報を表示します。$ .cxr parameter3 の後に kb - 例外コンテキスト情報を表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 例外コード
  • Parameter 2 - 例外レコード。 .exr を使用して表示します。
  • Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: THREAD_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

メモリのプローブ中に予期しない例外が発生しました。

考えられる原因

この停止は、IsBadXXXPtr 呼び出し中に例外が発生した場合に生成されます。 つまり、プローブしているメモリ バッファーには、呼び出し元が想定している保護が実際には存在しないか、メモリが既に解放されています。IsBadXXXPtr API の使用が推奨されない理由の詳細な例については、上記の他の停止コード (PROBE_INVALID_ADDRESS、PROBE_FR Enterprise Edition_MEM、PROBE_GUARD_PAGE、PROBE_NULL、PROBE_INVALID_START_OR_SIZE) を参照してください。 この停止をデバッグするには:$ parameter1は通常C0000005され、アクセス違反を意味します。$ .exr parameter2 - 例外情報を表示します。$ .cxr parameter3 の後に kb - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 例外コード
  • Parameter 2 - 例外レコード。 .exr を使用して表示します。
  • Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: PROBE_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

NULL アドレスをリセットしようとしています。

考えられる原因

この停止は、アプリ検証ツールが NULL の最初のパラメーターを使用して VirtualFree (MEM_RESET) 呼び出しを検出した場合に生成されます。 MEM_RESET は既に割り当てられているメモリに対してのみ使用する必要があるため、この場合、NULL は有効な最初のパラメーターではありません。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_MEM_RESET
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスレッドのスタック アドレス範囲内のヒープ メモリ ブロックを解放する。

考えられる原因

この停止は、アプリ検証ツールが、現在のスレッドのスタック (!) の実際に一部であるメモリ ブロックに対して HeapFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、HeapFree を呼び出した関数が、メモリ ブロックが動的に割り当てられているか、マップされているが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 割り当てベース アドレス。
  • Parameter 2 - メモリ領域のサイズ。
  • Parameter 3 - スタックの下限アドレス。
  • Parameter 4 - スタックの上限アドレス。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスレッドのスタック アドレス範囲内のメモリ領域のマッピングを解除します。

考えられる原因

この停止は、アプリ検証ツールが、現在のスレッドのスタック (!) の実際に一部であるメモリ ブロックに対して UnmapViewOfFile を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、UnmapViewOfFile を呼び出した関数が、メモリ ブロックが動的に割り当てられているか、マップされているが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1  - 割り当てベース アドレス。
  • Parameter 2 - メモリ領域のサイズ。
  • Parameter 3 - スタックの下限アドレス。
  • Parameter 4 - スタックの上限アドレス。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: FREE_THREAD_STACK_MEMORY_AS_MAP
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

RTL_RESOURCE アドレスが正しくありません。

考えられる原因

この停止は、アプリケーションが NULL またはその他の正しくないアドレス (カーネル モード アドレスなど) を有効なオブジェクトのアドレスとして使用しようとしている場合に生成されます。 RtlInitializeResource (NULL) は、この種の検証ツールの停止をトリガーする不適切な API 呼び出しです。 param1 は正しくないアドレスで、原因はスタック トレース上にあります (kb で表示します)。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - アドレス。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: INVALID_RESOURCE_ADDRESS
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

クリティカル セクション アドレスが無効です。

考えられる原因

この停止は、アプリケーションが NULL またはその他の正しくないアドレス (カーネル モード アドレスなど) を有効なオブジェクトのアドレスとして使用しようとしている場合に生成されます。 EnterCriticalSection (NULL) は、この種の検証ツールの停止をトリガーする不適切な API 呼び出しです。 param1 は正しくないアドレスで、原因はスタック トレース上にあります (kb で表示します)。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - アドレス。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_CRITSECT_ADDRESS
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

実行可能でないメモリでコードの実行を試みます。

考えられる原因

この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには: $ u parameter2 - 原因コード $ .exr parameter3 を組み立てる - 例外情報を表示します。$ .cxr parameter4 の後に kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - アクセス中のアドレス。
  • Parameter 2 - 無効なアクセスを実行しているコード。
  • Parameter 3 - 例外レコード。 .exr を使用して表示します。
  • Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: THREAD_UNEXPECTED_EXCEPTION_CODE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

出力バッファーの初期化中に予期しない例外が発生しました。

考えられる原因

この停止は、Win32 または CRT API の出力パラメーターとして指定されたバッファーの初期化中に例外が発生した場合に生成されます。 これは通常、指定された出力バッファー サイズが正しくないことを意味します。 この停止をデバッグするには: $ .exr parameter3 - 例外情報を表示します。$ .cxr parameter4 の後に kb - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - バッファーの開始アドレス。
  • パラメーター 2 - バッファー サイズ。
  • Parameter 3 - 例外レコード。 .exr を使用して表示します。
  • Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: OUTBUFF_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ヒープ ブロック サイズを検索しようとしたときに予期しない例外が発生しました。

考えられる原因

この停止は、解放されているヒープ ブロックに対して HeapSize を呼び出しているときに例外が発生した場合に生成されます。 これは通常、指定されたヒープ ブロック アドレスが正しくないか、ヒープが破損していることを意味します。 この停止をデバッグするには: $ .exr parameter3 - 例外レコードを表示します。$ .cxr parameter4 の後に kb - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 解放されるヒープ ブロックのアドレス。
  • Parameter 2 - ヒープハンドル。
  • Parameter 3 - 例外レコード。 .exr を使用して表示します。
  • Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: SIZE_HEAP_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

無効な開始アドレスを持つメモリ ブロックを解放しています。

考えられる原因

この停止は、ページの領域が予約されたときに VirtualAlloc または VirtualAllocEx 関数によって返されるベース アドレスではない lpAddress パラメーターを指定して VirtualFree (MEM_RELEA Standard Edition) を呼び出した場合に生成されます。この停止をデバッグするには、 $ kb - 現在のスタック トレースを表示します。これは VirtualFree を呼び出しています。 考えられる原因は、VirtualFree を呼び出す DLL です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - 解放されるメモリ ブロックのアドレス。
  • パラメーター 2 - 正しいメモリ ブロック アドレスが必要です。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: INVALID_FREEMEM_START_ADDRESS
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

無効な開始アドレスを持つメモリ ブロックのマッピングを解除します。

考えられる原因

この停止は、プログラムが、MapViewOfFile または MapViewOfFileEx 関数の前回の呼び出しによって返された値と同じではない lpBaseAddress パラメーターを使用して UnmapViewOfFile を呼び出した場合に生成されます。 この停止をデバッグするには、$ kb - UnmapViewOfFile を呼び出している現在のスタック トレースを表示します。 考えられる原因は、UnmapViewOfFile を呼び出す DLL です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アンマッピングされるメモリ ブロックのアドレス。
  • パラメーター 2 - 正しいメモリ ブロック アドレスが必要です。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: INVALID_UNMAPVIEW_START_ADDRESS
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

threadpool コールバック関数で予期しない例外が発生しました。

考えられる原因

この停止は、スレッド プール スレッドのコールバック関数が例外を発生させている場合に生成されます。 この停止をデバッグするには、例外の種類に対して $ parameter1 が重要な場合があります。 たとえば、例外コードC0000005アクセス違反を意味します。 $ .exr parameter2 - 例外情報を表示します。 $ .cxr parameter3 の後に kb - 例外コンテキスト情報を表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 例外コード
  • Parameter 2 - 例外レコード。 .exr を使用して表示します
  • Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します
  • Parameter 4 - 使用されていません

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: THREADPOOL_UNEXPECTED_EXCEPTION
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

非実行可能メモリ内のコード

考えられる原因

この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには: $ u parameter2 - 原因コード $ .exr parameter3 を組み立てる - 例外情報を表示します。$ .cxr parameter4 の後に kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - アクセス中のアドレス
  • Parameter 2 - 無効なアクセスを実行しているコード
  • Parameter 3 - 例外レコード。 .exr を使用して表示します。
  • Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。

追加情報
  • テスト レイヤー: メモリ
  • Stop ID: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

実行可能ヒープの作成。

考えられる原因

この停止は、アプリケーションが実行可能ヒープを作成している場合に生成されます。 これはセキュリティ上のリスクとなる可能性があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: EXECUTABLE_HEAP
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

実行可能メモリの割り当て。

考えられる原因

この停止は、アプリケーションが実行可能メモリを割り当てる場合に生成されます。 これはセキュリティ上のリスクとなる可能性があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 呼び出し元によって指定されたページ保護。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: メモリ
  • 停止 ID: EXECUTABLE_MEMORY
  • ストップコード: 600NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

TLS 停止の詳細

解放されなかった TLS インデックスを割り当てた DLL のアンロード。

考えられる原因

この停止は、TLS インデックスを解放する前に、TLS インデックスを割り当てた DLL がアンロードされている場合に生成されます。 この停止をデバッグするには: $ du parameter3 - 犯人 DLL の名前を表示します。$ .reload xxx.dll=parameter4 - 犯人 DLL のシンボルを再読み込みします (必要な場合)。 xxx.dllは、上記の手順で表示される DLL の名前です。$ u parameter2 - TLS を割り当てたコードを逆アセンブルします。 これは、TLS を割り当てたが、DLL がアンロードされる前に解放するのを忘れた関数を指している必要があります。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - TLS インデックス
  • パラメーター 2 - この TLS インデックスを割り当てたコードのアドレス。
  • Parameter 3 - DLL 名アドレス。 du を使用してダンプします。
  • Parameter 4 - DLL ベースアドレス。

追加情報
  • テスト レイヤー: TLS
  • 停止 ID: TLS_LEAK
  • ストップコード: 350NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

破損した検証ツールの TLS 構造。

考えられる原因

この停止は、スレッドの TLS スロットの状態を格納するために使用される内部検証ツール構造が破損している場合に生成されます。 これは、プロセス内のいくつかのランダムな破損が原因である可能性が非常に高いです。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - TEB アドレス。
  • Parameter 2 - 必要なTEB アドレス。
  • パラメーター 3 - スレッド ID。
  • パラメーター 4  - 予期されるスレッド ID。

追加情報
  • テスト レイヤー: TLS
  • Stop ID: CORRUPTED_TLS
  • ストップコード: 350NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

無効な TLS インデックスを使用しています。

考えられる原因

無効な TLS インデックスが使用されている場合、この停止が生成されます。 ほとんどの場合、TlsFree が呼び出されたときにコードがこのインデックスを使用しているためです。 スレッドプール スレッドの例を次に示します。 T1: Dll の読み込みと TlsAlloc T1: キュー コールバック T1: スキップされた待機/キャンセルされたコールバック T1: TlsFree T2: コールバックの実行と TlsSetValue T1 の呼び出し: Dll のアンロード

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - TLS インデックス
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: TLS
  • 停止 ID: INVALID_TLS_INDEX
  • ストップコード: 350NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

Threadpool 停止の詳細

このスレッド プール スレッドの優先順位が変更されました。

考えられる原因

この停止は、スレッド プールに返されるときにスレッドの優先度が変更された場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • 形式: -  コールバック (%p) を実行したスレッド プール スレッド (%x) のスレッド優先度が変更されています (%i -> %i)
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 現在の優先度。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: INCONSISTENT_PRIORITY
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

このスレッド プール スレッドのアフィニティが変更されました。

考えられる原因

この停止は、スレッド プールに返されるときにスレッドのアフィニティが変更された場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • 形式: - コールバック (%p) を実行したスレッド プール スレッド (%x) のスレッドアフィニティ マスクが変更されています (%p -> %p)
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 現在のアフィニティ。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: INCONSISTENT_AFFINITY_MASK
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

現在のスレッドのメッセージ プール内の未処理のメッセージ。

考えられる原因

このスレッド プール スレッドがプールに返されるときに、未処理のメッセージが残っている場合、この停止が生成されます。 まったく異なるコンテキストで処理されるため、危険です。 !avrf -tp を使用して <Param4> このスレッドに投稿されたメッセージを確認してください。

アプリケーション検証ツールによって表示される情報
  • コールバック (%p) を実行した Format: - threadpool スレッド (%x) に未処理のウィンドウ メッセージ (%x: %x) があります
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - Threadpool スレッド ID。!avrf -tp <threadid> を使用して、このスレッドに投稿されたメッセージを確認してください。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: ORPHANED_THREAD_MESSAGE
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

閉じていないウィンドウは、現在のスレッドに属しています。

考えられる原因

このスレッド プール スレッドがプールに返されるときに、ウィンドウが保持されている場合、この停止が生成されます。

アプリケーション検証ツールによって表示される情報
  • 形式: -  コールバック (%p) を実行したスレッド プール スレッド (%x) には、メッセージを受信できる有効な hwnd (%x: %s) があります
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - Threadpool スレッド ID。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: ORPHANED_THREAD_WINDOW
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

スレッドプール スレッドの ExitThread() です。

考えられる原因

この停止は、ExitThread がスレッドプール スレッドで呼び出された場合に生成されます。システムが不安定になるため、禁止されています。 リソース リーク、フリーズ、または AV が発生します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: ILLEGAL_THREAD_EXIT
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

スレッドがスレッド プール スレッドに返されると、スレッドは偽装状態になります。

考えられる原因

この停止は、コールバック関数がスレッド トークンを変更して別のユーザーを偽装し、スレッド プールに戻す前にリセットを忘れた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: THREAD_IN_IMPERSONATION
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

永続的なスレッドを必要とする関数が呼び出されます。

考えられる原因

一部の Microsoft Windows API は、専用または永続的なスレッド内で呼び出す必要があります。 スレッド プールでは、通常、スレッド ローカル ストレージを使用したり、RegNotifyChangeKeyValue 関数などの永続的なスレッドを必要とする非同期呼び出しをキューに入れないようにする必要があります。 ただし、このような関数は、queueUserWorkItem と WT_EXECUTEINPERSISTENTTHREAD オプションを使用して、永続的なワーカー スレッドにキューに登録できます。 デバッガーの KB によって呼び出し元が表示されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • Stop ID: PERSISTED_THREAD_NEEDED
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

スレッドがトランザクション状態ダーティ。

考えられる原因

この停止は、コールバック関数が現在のトランザクション ハンドルを閉じるかリセットするのを忘れた場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - トランザクション ハンドル。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: DIRTY_TRANSACTION_CONTEXT
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

このスレッド プールの状態では、CoInit 呼び出しと CoUnInit 呼び出しが不均衡になっています。

考えられる原因

この停止は、コールバック関数が CoInit を呼び出し、CoUnInit が不均衡な場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • パラメーター 4 - バランスの取れた呼び出し数。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: DIRTY_COM_STATE
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

タイマー オブジェクトのパラメーターに一貫性がありません。 タイマーの作成時にWT_EXECUTEONLYONCEを指定する場合は、ピリオドを 0 にする必要があります

考えられる原因

タイマーが WT_EXECUTEONLYONCE フラグで 1 回だけ通知するように設定されている場合、タイマーを通知する期間が 0 でない場合に、この停止が生成されます

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Period が指定されました。
  • Parameter 2 - Flags が指定されました。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: INCONSISTENT_TIMER_PARAMS
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

ローダー ロックは、コールバック内のスレッドプール スレッドによって保持されています。

考えられる原因

この停止は、ローダー ロックがコールバック内で保持され、スレッドがスレッド プールに返されるときに解放されない場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: LOADER_LOCK_HELD
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

優先言語は、コールバック内のスレッドプール スレッドによって設定されます。

考えられる原因

この停止は、コールバック内で優先言語が設定されている場合に生成され、スレッドがスレッド プールに返されたときにクリアされません。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • Stop ID: PREFERRED_LANGUAGES_SET
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

バックグラウンド優先度は、コールバック内のスレッドプール スレッドによって設定されます。

考えられる原因

この停止は、コールバック内でバックグラウンド優先順位が設定されており、スレッドがスレッド プールに返されたときに無効にされない場合に生成されます。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - Callback 関数
  • Parameter 2 - コンテキスト。
  • Parameter 3 - Threadpool オブジェクトの割り当てスタック トレース。dps を使用してダンプします。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • Stop ID: BACKGROUND_PRIORITY_SET
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

スレッドプール スレッドの TerminateThread() です。

考えられる原因

この停止は、スレッドプール スレッドで TerminateThread が呼び出された場合に生成されます。 システムが不安定になるため、禁止されています。 リソース リーク、フリーズ、または AV が発生します。

アプリケーション検証ツールによって表示される情報
  • Parameter 1 - 使用されていません。
  • Parameter 2 - 使用されていません。
  • Parameter 3 - 使用されていません。
  • Parameter 4 - 使用されていません。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: ILLEGAL_THREAD_TERMINATION
  • ストップコード: 700NAN
  • 重要度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

参照

アプリケーション検証ツール - 停止コードと定義

アプリケーション検証ツール - 概要

アプリケーション検証ツール - 機能

アプリケーション検証ツール - アプリケーションのテスト

アプリケーション検証ツール - アプリケーション検証ツール内のテスト

アプリケーション検証ツール - アプリケーション検証ツール停止のデバッグ

アプリケーション検証ツール - よく寄せられる質問