アプリケーション検証ツール - 停止コード - その他

この一連のテストには、次の停止コードが含まれています。

TerminateThread の危険な呼び出し。

考えられる原因

この停止は、スレッド (スレッド ID は parameter1) が TerminateThread を使用して明示的に終了した場合に生成されます。この関数は、(MSDN に従って) データの破損とデッドロックが発生するため、非常に危険です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Terminatethread の呼び出し元のスレッド ID。
  • パラメーター 2 - 使用されていません。
  • パラメーター 3 - 使用されていません。
  • パラメーター 4 - 使用されていません。

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: TERMINATE_THREAD_CALL
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

メモリ不足状態でスタック オーバーフローが発生する可能性があります。

考えられる原因

この停止は、スレッドの初期スタック コミット サイズが、スタックを拡張できない場合にメモリ不足状態でスタック オーバーフローを発生させる場合に生成されます。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: STACK_OVERFLOW
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

複数のスレッドの実行中に ExitProcess が呼び出されます。

考えられる原因

複数のスレッドが実行されている間にスレッドが ExitProcess を呼び出すと、この停止が生成されます。 このような場合は、スレッドごとに内部的に TerminateThread が呼び出され、デッドロックやデータ破損が発生する可能性があります。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_EXIT_PROCESS_CALL
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

LoadLibrary は DllMain 中に呼び出されます。

考えられる原因

この停止は、DllMain 内のコードが LoadLibrary または FreeLibary を呼び出した場合に生成されます。 これは、MSDN で禁止されている動作です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Dll 名 (ダンプするには du を使用します)。
  • パラメーター 2 - Dll ベース アドレス。
  • パラメーター 3 - 使用されていません。
  • パラメーター 4 - 使用されていません。

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_LOAD_LIBRARY_CALL
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

FreeLibrary は DllMain 中に呼び出されます。

考えられる原因

この停止は、DllMain 内のコードが LoadLibrary または FreeLibary を呼び出した場合に生成されます。 これは、MSDN で禁止されている動作です。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Dll 名 (ダンプするには du を使用します)。
  • パラメーター 2 - Dll ベース アドレス。
  • パラメーター 3 - 使用されていません。
  • パラメーター 4 - 使用されていません。

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_FREE_LIBRARY_CALL
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

SetProcessWorkingSetSize は MinimumWorkingSetSize = 0xFFFFFFFFで呼び出されます。

考えられる原因

MinimumWorkingSetSize = (SIZE_T) -1 を使用してください。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_MINIMUM_PROCESS_WORKING_SIZE
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

SetProcessWorkingSetSize は MaximumWorkingSetSize = 0xFFFFFFFFで呼び出されます。

考えられる原因

MaximumWorkingSetSize = (SIZE_T) -1 を使用してください。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_MAXIMUM_PROCESS_WORKING_SIZE
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

SetProcessWorkingSetSizeEx は MinimumWorkingSetSize = 0xFFFFFFFFで呼び出されます。

考えられる原因

MinimumWorkingSetSize = (SIZE_T) -1 を使用してください。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

SetProcessWorkingSetSizeEx は MaximumWorkingSetSize = 0xFFFFFFFFで呼び出されます。

考えられる原因

MaximumWorkingSetSize = (SIZE_T) -1 を使用してください。

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

追加情報
  • テスト レイヤー: 危険
  • 停止 ID: INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
  • 停止コード: 100NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

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

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: ロック
  • 停止 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 - アクティブな一覧で見つかったデバッグ情報構造のアドレス。
  • パラメーター 3 - First 初期化スタック トレース。
  • パラメーター 4 - 2 番目の初期化スタック トレース。

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: ロック
  • 停止 ID: LOCK_IN_FREED_VMEM
  • コードの停止: 200NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - SRW ロック
  • パラメーター 2 - Not used
  • パラメーター 3 - Not used
  • パラメーター 4 - Not used

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

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

考えられる原因

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

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

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

SRW ロックのAcquire-Releaseが一致しません。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: SRWLock
  • 停止 ID: IN_FREED_MEMORY
  • コードの停止: 250NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Exception コード。
  • パラメーター 2 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 3 - Context レコード。 .cxr を使用して表示します。
  • パラメーター 4 - 使用されていません。

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Handle 値。
  • パラメーター 2 - Object 型名。 du を使用して表示する
  • パラメーター 3 - 予想されるオブジェクト型名。 du を使用して表示する
  • パラメーター 4 - 使用されていません。

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

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: Tls
  • 停止 ID: TLS_LEAK
  • コードの停止: 350NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: Tls
  • 停止 ID: CORRUPTED_TLS
  • コードの停止: 350NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - TLS インデックス
  • パラメーター 2 - Not used。
  • パラメーター 3 - Not used。
  • パラメーター 4 - Not used。

追加情報
  • テスト レイヤー: Tls
  • 停止 ID: INVALID_TLS_INDEX
  • コードの停止: 350NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

空きメモリのプローブ。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

NULL アドレスのプローブ。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

この停止は、アプリ検証ツールが dwSize パラメーターの 0 以外の値を持つ VirtualFree (MEM_RELEASE) を検出した場合に生成されます。 MEM_RELEASE を使用する場合、このパラメーターに許容される値は 0 のみです。 VirtualFree が 0 以外の他の値で呼び出された場合、VirtualFree はメモリの解放に失敗します。 この停止をデバッグするには、現在のスタック トレース (kb) を確認します。VirtualFree の呼び出し元はおそらく原因です。

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

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

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

考えられる原因

この停止は、DLL のエントリ ポイント (DllMain) 関数で例外が発生している場合に生成されます。 これが悪い理由の 1 つは、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 は内部検証ツール構造のアドレスであり、ほとんどの検証者ユーザーにとって何の意味も持ちません。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - DLL 名 (du を使用してダンプします)。
  • パラメーター 2 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 3 - Context レコード。 .cxr を使用して表示します。
  • パラメーター 4 - Verifier dll 記述子

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Exception コード。
  • パラメーター 2 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 3 - Context レコード。 .cxr を使用して表示します。
  • パラメーター 4 - 使用されていません。

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Exception コード。
  • パラメーター 2 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 3 - Context レコード。 .cxr を使用して表示します。
  • パラメーター 4 - Not used

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

現在のスレッドのスタック アドレス範囲内のメモリ領域のマップ解除。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アクセスされるアドレス。
  • パラメーター 2 - 無効なアクセスを実行しているコード。
  • パラメーター 3 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 4 - Context レコード。 .cxr を使用して表示します。

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Buffer の開始アドレス。
  • パラメーター 2 - Buffer size。
  • パラメーター 3 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 4 - Context レコード。 .cxr を使用して表示します。

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

無効な開始アドレスを持つメモリ ブロックのマップ解除。

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Exception コード
  • パラメーター 2 - Exception レコード。 .exr を使用して表示する
  • パラメーター 3 - Context レコード。 .cxr を使用して表示する
  • パラメーター 4 - Not used

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アクセスされているアドレス
  • パラメーター 2 - 無効なアクセスを実行しているコード
  • パラメーター 3 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 4 - Context レコード。 .cxr を使用して表示します。

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

実行可能ヒープの作成。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - アクセスされるアドレス。
  • パラメーター 2 - 無効なアクセスを実行しているコード。
  • パラメーター 3 - Exception レコード。 .exr を使用して表示します。
  • パラメーター 4 - Context レコード。 .cxr を使用して表示します。

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Callback 関数。
  • パラメーター 2 - Context。
  • パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
  • パラメーター 4 - Not used。

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Callback 関数。
  • パラメーター 2 - Context。
  • パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
  • パラメーター 4 - Not used。

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Callback 関数。
  • パラメーター 2 - Context。
  • パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
  • パラメーター 4 - Not used。

追加情報
  • テスト レイヤー: Threadpool
  • 停止 ID: PERSISTED_THREAD_NEEDED
  • コードの停止: 700NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Callback 関数。
  • パラメーター 2 - Context。
  • パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
  • パラメーター 4 - Transaction Handle。

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

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

考えられる原因

この停止は、コールバック関数が CoInit と CoUnInit のアンバランスを呼び出した場合に生成されます。

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

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

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

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Period を指定しました。
  • パラメーター 2 - Flags を指定しました。
  • パラメーター 3 - Not used。
  • パラメーター 4 - Not used。

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

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

スレッドプール スレッドの TerminateThread()

考えられる原因

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

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - Not used。
  • パラメーター 2 - Not used。
  • パラメーター 3 - Not used。
  • パラメーター 4 - Not used。

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

非同期 I/O 操作が保留中のときにスタックがアンワインドされました。

考えられる原因

この停止は、アプリケーションがスタック変数を使用する I/O 操作を発行し、I/O の完了を待機していない場合に生成されるため、スタック破損が発生します。 この停止をデバッグするには: $ dps parameter4 I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O を発行したスレッドのスタック ベースのアドレスと parameter3 を示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - I/O で使用されるスタック変数のアドレス。
  • パラメーター 2 - 現在のスタック ポインター。
  • パラメーター 3 - I/O を発行した元のスレッド。
  • パラメーター 4 - I/O が発行されたときのスタック トレース。

追加情報
  • テスト レイヤー: Io
  • 停止 ID: ASYNCIO_STACK_UNWIND
  • 停止コード: 800NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

非同期 I/O 操作が保留中のときにスタックが破損しました。

考えられる原因

この停止は、アプリケーションがスタック変数を使用する I/O 操作を発行し、I/O の完了を待機していない場合に生成されるため、スタック破損が発生します。 この停止をデバッグするには: $ dps parameter4 I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O を発行したスレッドのスタック ベースのアドレスと parameter3 を示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - I/O で使用されるスタック変数のアドレス。
  • パラメーター 2 - 現在のスタック ポインター。
  • パラメーター 3 - I/O を発行した元のスレッド。
  • パラメーター 4 - I/O が発行されたときのスタック トレース。

追加情報
  • テスト レイヤー: Io
  • 停止 ID: ASYNCIO_CORRUPTED_STACK
  • 停止コード: 800NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

保留中の I/O 操作で解放されたアドレスを使用する。

考えられる原因

この停止は、アプリケーションが I/O 操作を発行し、I/O が完了する前に I/O で使用されているメモリを解放した場合に生成され、メモリ破損などが発生します。この停止をデバッグするには: $ dps parameter4 I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O で使用されるアドレスを示します。 Parameter2 は、解放されるアドレスと、I/O を発行したスレッドである parameter3 を示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - I/O で使用されるアドレス。
  • パラメーター 2 - 解放されているアドレス。
  • パラメーター 3 - I/O を発行した元のスレッド。
  • パラメーター 4 - I/O が発行されたときのスタック トレース。

追加情報
  • テスト レイヤー: Io
  • 停止 ID: FREED_ADDRESS_IN_PENDINGIO
  • 停止コード: 800NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

関連付けられた I/O 要求がまだ保留中の間は、I/O 状態ブロック (OVERLAPPED) が再利用されます。

考えられる原因

この停止は、その I/O 状態ブロック (OVERLAPPED) を使用する I/O 要求がまだ保留中である間に、アプリケーションが I/O 状態ブロック (OVERLAPPED) を再利用した場合に生成されます。 この停止をデバッグするには、 $ dps parameter3 元の I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O で使用されるアドレスと、I/O を発行したスレッドの parameter2 を示します。

アプリケーション検証ツールによって表示される情報
  • パラメーター 1 - I/O 状態ブロックのアドレス (OVERLAPPED)。
  • パラメーター 2 - I/O を発行した元のスレッド。
  • パラメーター 3 - I/O が発行されたときのスタック トレース。
  • パラメーター 4 - Not used。

追加情報
  • テスト レイヤー: Io
  • 停止 ID: REUSED_IOSTATUS_BLOCK
  • 停止コード: 800NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

サポートされていないフラグを使用して CreateFile にFILE_ATTRIBUTE_NOT_CONTENT_INDEXEDする

考えられる原因

MSDN の古いバージョンでは、CreateFile がサポートFILE_ATTRIBUTE_NOT_CONTENT_INDEXEDとして誤って記載されています。 このフラグが意図されている場合は、SetFileAttributes などの他の API 関数を使用して設定する必要があります。 $ ln Parameter1: CreateFile の呼び出し元を検索します。

アプリケーション検証ツールによって表示される情報
  • 形式: -  フラグ %08x %08x %08x %08x を使用した %hs%ws の書き込み中に CreateFile
  • パラメーター 1 - Return Address。
  • パラメーター 2 - 使用されていません。
  • パラメーター 3 - 使用されていません。
  • パラメーター 4 - 使用されていません。

追加情報
  • テスト レイヤー: Io
  • 停止 ID: USING_BAD_CREATEFILE_FLAG
  • 停止コード: 800NAN
  • 重大 度: 警告
  • 1 回限りエラー: 
  • エラー レポート: なし
  • ファイルにログを記録する: はい
  • バックトレースを作成する: はい

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

考えられる原因

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

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

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

HANDLE がリークされました。

考えられる原因

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

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

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

HKEY がリークされました。

考えられる原因

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

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

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

仮想予約が漏洩しました。

考えられる原因

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

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

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

BSTR がリークされました。

考えられる原因

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

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

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

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

考えられる原因

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

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

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

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

考えられる原因

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

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

追加情報
  • テスト レイヤー: リーク
  • 停止 ID: COM_ALLOCATION
  • コードの停止: 900NAN
  • 重大 度: エラー
  • 1 回限りエラー: 
  • エラー レポート: 破る
  • ファイルへのログ: はい
  • バックトレースを作成する: はい

参照

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

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

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

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

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

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

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