この一連のテストには、次の停止コードが含まれています。
TerminateThread の危険な呼び出し。
考えられる原因この停止は、TerminateThread を使用してスレッド (スレッド ID がパラメーター 1) が明示的に終了された場合に生成されます。この関数は、データの破損とデッドロックが発生するため (MSDN に従って) 非常に危険です。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Terminatethread の呼び出し元のThread ID。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: TERMINATE_THREAD_CALL
- コードの停止: 0x100
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
メモリ不足状態でスタック オーバーフローが発生する可能性があります。
考えられる原因この停止は、スレッドの初期スタック コミット サイズが、スタックを拡張できない場合にメモリ不足状態でスタック オーバーフローが発生する可能性がある場合に生成されます。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: STACK_OVERFLOW
- コードの停止: 0x101
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
複数のスレッドがまだ実行中に ExitProcess が呼び出されました。
考えられる原因この停止は、複数のスレッドが実行されている間にスレッドが ExitProcess を呼び出した場合に生成されます。 このような場合、内部的に TerminateThread がスレッドごとに呼び出され、デッドロックやデータ破損が発生する可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 実行中のスレッドの数。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_EXIT_PROCESS_CALL
- コードの停止: 0x102
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
LoadLibrary は DllMain 中に呼び出されます。
考えられる原因この停止は、DllMain 内のコードが LoadLibrary または FreeLibary を呼び出した場合に生成されます。 これは、MSDN で禁止されている動作です。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Dll 名 (du を使用してダンプします)。
- パラメーター 2 - Dll のベース アドレス。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_LOAD_LIBRARY_CALL
- コードの停止: 0x103
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
FreeLibrary は DllMain 中に呼び出されます。
考えられる原因この停止は、DllMain 内のコードが LoadLibrary または FreeLibary を呼び出した場合に生成されます。 これは、MSDN で禁止されている動作です。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Dll 名 (du を使用してダンプします)。
- パラメーター 2 - Dll のベース アドレス。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_FREE_LIBRARY_CALL
- コードの停止: 0x104
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SetProcessWorkingSetSize は、MinimumWorkingSetSize = 0xFFFFFFFFで呼び出されます。
考えられる原因MinimumWorkingSetSize = (SIZE_T) -1 を使用してください。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_MINIMUM_PROCESS_WORKING_SIZE
- コードの停止: 0x105
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SetProcessWorkingSetSize は MaximumWorkingSetSize = 0xFFFFFFFFで呼び出されます。
考えられる原因MaximumWorkingSetSize = (SIZE_T) -1 を使用してください。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_MAXIMUM_PROCESS_WORKING_SIZE
- コードの停止: 0x106
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SetProcessWorkingSetSizeEx は、MinimumWorkingSetSize = 0xFFFFFFFFで呼び出されます。
考えられる原因MinimumWorkingSetSize = (SIZE_T) -1 を使用してください。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
- コードの停止: 0x107
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SetProcessWorkingSetSizeEx は MaximumWorkingSetSize = 0xFFFFFFFFで呼び出されます。
考えられる原因MaximumWorkingSetSize = (SIZE_T) -1 を使用してください。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 危ない
- 停止 ID: INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
- コードの停止: 0x108
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッドはクリティカル セクションを所有できません。
考えられる原因この停止は、スレッド (スレッド ID がパラメーター 1) が終了、中断、またはクリティカル セクションを保持できない状態 (ワーカー スレッドが作業項目を終了) している場合に生成されます。 現在のスレッドが原因です。 この停止をデバッグするには、次のデバッガー コマンドを使用します。
- kb - 現在のスタック トレースを取得します。 現在のスレッドがクリティカル セクションの所有者である場合は、おそらく ExitThread を呼び出しています。 終了する前に、現在のスレッドがクリティカル セクションを解放している必要があります。 現在のスレッドが TerminateThread または SuspendThread を呼び出している場合は、クリティカル セクションを保持しているスレッドに対してこれを行わないでください。
- !cs -s <パラメーター> - このクリティカル セクションに関するダンプ情報。
- ln <parameter2> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、リークしたクリティカル セクションを特定するのに役立ちます。
- dps <parameter4> - このクリティカル セクション初期化のスタック トレースをダンプします。
- パラメーター 1 - Thread ID。
- パラメーター 2 - Critical セクション アドレス。
- パラメーター 3 - Critical セクションのデバッグ情報アドレス。
- パラメーター 4 - Critical セクション初期化スタック トレース。
- テスト レイヤー: ロック
- 停止 ID: EXIT_THREAD_OWNS_LOCK
- コードの停止: 0x200
- 重要度: エラー
- 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
- コードの停止: 0x201
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
アクティブなクリティカル セクションを含むヒープ ブロックを解放する。
考えられる原因この停止は、ヒープ割り当てにクリティカル セクションが含まれており、割り当てが解放され、クリティカル セクションが削除されていない場合に生成されます。 この停止をデバッグするには、次のデバッガー コマンドを使用します。
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、リークしたクリティカル セクションを特定するのに役立ちます。
- dps <parameter2> - このクリティカル セクション初期化のスタック トレースをダンプします。
- < parameter3> と <parameter4> はこのヒープ ブロックが割り当てられた場所を理解するのに役立つ場合があります (割り当てのサイズはおそらく重要です)。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクション初期化スタック トレース。
- パラメーター 3 - Heap ブロック アドレス。
- パラメーター 4 - Heap ブロック サイズ。
- テスト レイヤー: ロック
- 停止 ID: LOCK_IN_FREED_HEAP
- コードの停止: 0x202
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
二重初期化または破損したクリティカル セクション。
考えられる原因通常、この停止は、クリティカル セクションが複数回初期化されている場合に生成されます。 この場合、parameter3 と parameter4 は、これらの 2 つの初期化のスタック トレース アドレスです。 重要なセクションまたはそのデバッグ情報構造が破損している場合は、この停止を取得できる場合もあります。 この 2 番目のケースでは、parameter3 と parameter4 が無効で役に立たない可能性があります。 この停止をデバッグするには:
- !cs -s -d <parameter2> - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、グローバル変数の場合にクリティカル セクションを識別するのに役立ちます。
- dps <parameter3>dps <parameter4> - このクリティカル セクションを初期化するための 2 つのコード パスを識別します。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - アクティブな一覧にあるデバッグ情報構造のアドレス。
- パラメーター 3 - First 初期化スタック トレース。
- パラメーター 4 - Second 初期化スタック トレース。
- テスト レイヤー: ロック
- 停止 ID: LOCK_DOUBLE_INITIALIZE
- コードの停止: 0x203
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
アクティブなクリティカル セクションを含む空きメモリ。
考えられる原因この停止は、クリティカル セクションを含むメモリが解放されたが、DeleteCriticalSection を使用してクリティカル セクションが削除されていない場合に生成されます。 この停止をデバッグするには、次のデバッガー コマンドを使用します。
- !cs -s -d <parameter2> - このクリティカル セクションに関するダンプ情報。
- dps <parameter3> - このクリティカル セクションを初期化するためのコード パスを識別します。
ほとんどの場合、ロック検証ツールは、ヒープ割り当て、DLL 範囲、仮想メモリの割り当て、マップされたメモリ範囲に含まれる重大なセクションがすぐにリークしたことを検出し、このような場合に異なる停止を発行します。 そのため、この検証ツールの停止に残っているケースはほとんどありません。 ロックは、カーネル モード コードによって解放されたメモリ範囲にあるか、VirtualFreeEx などの API によってプロセス間で解放されている必要があります。 通常、この停止は、デバッガー コンソールで 'g' を押して前の停止 (LOCK_IN_FREED_HEAPやLOCK_IN_UNLOADED_DLLなど) が続行された場合に発生します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクションのデバッグ情報アドレス。
- パラメーター 3 - Critical セクション初期化スタック トレース。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ロック
- 停止 ID: LOCK_IN_FREED_MEMORY
- コードの停止: 0x204
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
破損したクリティカル セクション。
考えられる原因この停止は、クリティカル セクションの DebugInfo フィールドが解放されたメモリを指している場合に生成されます。 通常、別の有効な DebugInfo 構造体がアクティブなクリティカル セクションの一覧にあります。 破損することなく、2 つのポインターは同じにする必要があります。 この停止をデバッグするには、次のデバッガー コマンドを使用します。
- !cs -s -d <parameter3> - アクティブなリストにあるデバッグ情報構造の現在の内容に基づいて、このクリティカル セクションに関する情報をダンプします (この構造体はほとんど破損しないため、通常、この情報は信頼できます)。
- !cs -s <parameter1> - クリティカル セクション構造の現在の内容に基づいて、このクリティカル セクションに関する情報をダンプします (構造は既に破損しているため、この情報が信頼できない場合があります)。
- dps <parameter4> - このクリティカル セクションを初期化するためのコード パスを識別します。 アドレス パラメーター 1 にクリティカル セクションをダンプし、破損パターンを探します。 ntdll.dl の適切なシンボルでは、次のコマンドを使用できます。
- dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS
- dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - このクリティカル セクションのInvalid デバッグ情報アドレス。
- パラメーター 3 - アクティブな一覧にあるデバッグ情報のアドレス。
- パラメーター 4 - Initialization スタック トレース。
- テスト レイヤー: ロック
- 停止 ID: LOCK_CORRUPTED
- コードの停止: 0x205
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクション所有者スレッドが無効です。
考えられる原因この停止は、現在のコンテキストで所有者スレッド ID が無効な場合に生成されます。 この停止をデバッグするには:
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、重要なセクションを特定するのに役立ちます。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Owning スレッド。
- パラメーター 3 - Expected 所有スレッド。
- パラメーター 4 - Critical セクションのデバッグ情報アドレス。
- テスト レイヤー: ロック
- 停止 ID: LOCK_INVALID_OWNER
- コードの停止: 0x206
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクションの再帰数が無効です。
考えられる原因この停止は、クリティカル セクション構造の再帰カウント フィールドが現在のコンテキストで無効な場合に生成されます。 この停止をデバッグするには:
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、重要なセクションを特定するのに役立ちます。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Recursion count。
- パラメーター 3 - Expected recursion count.
- パラメーター 4 - Critical セクションのデバッグ情報アドレス。
- テスト レイヤー: ロック
- 停止 ID: LOCK_INVALID_RECURSION_COUNT
- コードの停止: 0x207
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ロックカウントが無効なクリティカル セクションを削除しています。
考えられる原因この停止は、クリティカル セクションが削除された場合、またはクリティカル セクションが初期化されていない場合に、スレッドが所有している場合に生成されます。 この停止をデバッグするには:
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。 所有スレッドが 0 の場合、クリティカル セクションは初期化されていません。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、重要なセクションを特定するのに役立ちます。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Lock count。
- パラメーター 3 - Expected ロック数。
- パラメーター 4 - Owning スレッド。
- テスト レイヤー: ロック
- 停止 ID: LOCK_INVALID_LOCK_COUNT
- コードの停止: 0x208
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクションが過剰にリリースまたは破損しています。
考えられる原因この停止は、クリティカル セクションが現在のスレッドによって取得された回数よりも多く解放された場合に生成されます。 この停止をデバッグするには:
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- !cs -s -d <parameter4> - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、重要なセクションを特定するのに役立ちます。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Lock count。
- パラメーター 3 - Expected ロック数。
- パラメーター 4 - Critical セクションのデバッグ情報アドレス。
- テスト レイヤー: ロック
- 停止 ID: LOCK_OVER_RELEASED
- コードの停止: 0x209
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクションが初期化されていません。
考えられる原因この停止は、クリティカル セクションが初期化されず、または削除された後に使用された場合に生成されます。 この停止をデバッグするには:
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、重要なセクションを特定するのに役立ちます。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクションのデバッグ情報アドレス。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ロック
- 停止 ID: LOCK_NOT_INITIALIZED
- コードの停止: 0x210
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクションは既に初期化されています。
考えられる原因この停止は、クリティカル セクションが現在のスレッドによって再初期化された場合に生成されます。 この停止をデバッグするには:
- !cs -s <parameter1> または !cs -s -d parameter2 - このクリティカル セクションに関するダンプ情報。
- ln <parameter1> - クリティカル セクションのアドレスの近くにシンボルを表示します。 これは、グローバル変数の場合にクリティカル セクションを識別するのに役立ちます。
- dps <parameter3> - このクリティカル セクションの最初の初期化のコード パスを識別します。
- kb - 現在のスタック トレースを表示するには、この重要なセクションを再初期化します。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクションのデバッグ情報アドレス。
- パラメーター 3 - First 初期化スタック トレース。 NULL 以外の場合は dps を使用してダンプする
- Parameter 4 - 使用されていません。
- テスト レイヤー: ロック
- 停止 ID: LOCK_ALREADY_INITIALIZED
- コードの停止: 0x211
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
アクティブなクリティカル セクションを含む仮想メモリを解放する。
考えられる原因この停止は、現在のスレッドがアクティブなクリティカル セクションを含むメモリ ブロックで VirtualFree を呼び出している場合に生成されます。 アプリケーションは、このメモリを解放する前に、このクリティカル セクションで DeleteCriticalSection を呼び出す必要があります。
- kb - VirtualFree を呼び出している現在のスタック トレースを表示します。 考えられる原因は、VirtualFree を呼び出す DLL です。
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- dps <parameter2> - このクリティカル セクションの初期化のコード パスを識別します。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクション初期化スタック トレース。
- パラメーター 3 - Memory ブロック アドレス。
- パラメーター 4 - Memory ブロック サイズ。
- テスト レイヤー: ロック
- 停止 ID: LOCK_IN_FREED_VMEM
- コードの停止: 0x212
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
アクティブなクリティカル セクションを含むメモリ領域のマッピングを解除します。
考えられる原因この停止は、現在のスレッドがアクティブなクリティカル セクションを含むメモリ ブロックで UnmapViewOfFile を呼び出している場合に生成されます。 アプリケーションでは、このメモリのマップを解除する前に、このクリティカル セクションで DeleteCriticalSection を呼び出す必要があります。
- kb - UnmapViewOfFile を呼び出している現在のスタック トレースを表示します。 考えられる原因は、UnmapViewOfFile を呼び出す DLL です。
- !cs -s <parameter1> - このクリティカル セクションに関するダンプ情報。
- dps <parameter2> - このクリティカル セクションの初期化のコード パスを識別します。
- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - Critical セクション初期化スタック トレース。
- パラメーター 3 - Memory ブロック アドレス。
- パラメーター 4 - Memory ブロック サイズ。
- テスト レイヤー: ロック
- 停止 ID: LOCK_IN_UNMAPPED_MEM
- コードの停止: 0x213
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスレッドは重要なセクションを所有していません。
考えられる原因この停止は、現在のスレッドが LeaveCriticalSection を呼び出している場合に生成されますが、内部検証者のブックキーピングによると、重要なセクションは所有していません。 parameter2 がゼロの場合、おそらくこれは現在のスレッドのバグです。 入力しなかったクリティカル セクションを残そうとするか、同じクリティカル セクションに対して EnterCriticalSection と呼ばれるよりも多くの回数 LeaveCriticalSection を呼び出している可能性があります。 parameter2 が 0 でない場合 (負の整数)、内部検証ツールのデータ構造が破損している可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Critical セクション アドレス。
- パラメーター 2 - 現在のスレッドが所有するクリティカル セクションの数。
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: ロック
- 停止 ID: THREAD_NOT_LOCK_OWNER
- コードの停止: 0x214
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
別の DLL に対してプライベートなクリティカル セクションを使用する。
考えられる原因この停止は、現在のスレッドが別の DLL 内に存在するプライベート ロックを使用しようとした場合に生成されます。 たとえば、a.dll は、ntdll.dll内で定義されたクリティカル セクションを入力しようとします。 プライベート ロックは DLL 間で使用できません。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Critical セクション アドレス。
- Parameter 2 - 使用されていません。
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: ロック
- 停止 ID: LOCK_PRIVATE
- コードの停止: 0x215
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SRW ロックが初期化されていません。
考えられる原因この停止は、スレッドが初期化されていない SRW ロック (Param1) を使用しようとしている場合に生成されます。 デバッグするには、'kb' を使用して現在のスタック トレースを取得します。 SRW ロックが使用されている場所です。 使用する前に、InitializeSRWLock を使用して SRW ロックを初期化する必要があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - SRW ロック
- パラメーター 2 - 使用しない
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: NOT_INITIALIZED
- コードの停止: 0x250
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SRW ロックは既に初期化されています。
考えられる原因この停止は、SRW ロック (Param1) が再初期化されている場合に生成されます。 SRW ロックが他のスレッドによってアクティブに使用されている場合、ロックを再初期化すると、ハングやクラッシュなど、アプリケーションによる予期しない動作が発生します。 SRW ロックが静的に初期化された場合、初期化スタック トレースに取得が表示される場合があります。
- kb - 現在のスタック トレースを取得します。 ここで、SRW ロックが再初期化されます。
- dps <パラメーター3> - SRW ロック初期化スタック トレースを取得します。 ロックが静的に初期化された場合、このスタック トレースに取得が表示される場合があります。
- パラメーター 1 - SRW ロック
- パラメーター 2 - SRW ロックを初期化したスレッドのThreadId。
- パラメーター 3 - 初期化スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが初期化された場所を確認します。
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: ALREADY_INITIALIZED
- コードの停止: 0x251
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SRW ロックの Acquire-Release が一致していません。
考えられる原因この停止は、SRW ロック (Param1) が間違ったリリース API で解放されている場合に生成されます。 共有アクセス用に SRW ロックが取得され、排他リリース API を使用して解放されている場合、または SRW ロックが排他アクセス用に取得され、共有リリース API を使用してリリースされている場合。 これにより、ハングやクラッシュなど、アプリケーションによる予期しない動作が発生する可能性があります。
- kb - 現在のスタック トレースを取得します。 ここで、間違った API を使用して SRW ロックが解放されます。
- dps <parameter3> - SRW ロック取得スタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - SRW ロックを取得したスレッドのThreadId。
- パラメーター 3 - 取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: MISMATCHED_ACQUIRE_RELEASE
- コードの停止: 0x252
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SRW ロックは、同じスレッドによって再帰的に取得されています。
考えられる原因この停止は、SRW ロック (Param1) が同じスレッドによって再帰的に取得されている場合に生成されます。 これによりデッドロックが発生し、スレッドは無期限にブロックされます。 排他モードで SRW ロックを再帰的に取得すると、デッドロックが発生します。 共有モードで SRW ロックを再帰的に取得すると、排他アクセスを待機しているスレッドがある場合にデッドロックが発生します。 次の例を考えてみましょう。 - スレッド A は共有モードで SRW ロックを取得します。スレッド B は排他モードで SRW ロックを有効にして待機します。スレッド A は、共有モードで SRW ロックを再帰的に取得しようとします。 排他的待機者 (この場合は B) がない限り、これは成功します。 SRW ロックにはライター不足がないため、スレッド A はスレッド B の背後で待機します。現在、スレッド B はスレッド A を待機しています。スレッド B が循環待機を引き起こすのを待機しているため、デッドロックが発生します。
- kb - 現在のスタック トレースを取得します。 これは、SRW ロックが再帰的に取得される場所です。
- dps <parameter2> - 最初の取得のスタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - 最初の取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: RECURSIVE_ACQUIRE
- コードの停止: 0x253
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
終了中または終了中のスレッドは、SRW ロックを所有しています。
考えられる原因この停止は、SRW ロック (Param1) を所有するスレッド (Param2) が終了または終了している場合に生成されます。 これにより、孤立した SRW ロックが発生し、このロックを取得しようとしているスレッドは無期限にブロックされます。
- kb - 現在のスタック トレースを取得します。 これは、スレッドが終了中または終了中の場所です。
- dps <parameter3> - SRW ロック取得スタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - 終了または終了しているスレッドのThreadId。
- パラメーター 3 - 取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: EXIT_THREAD_OWNS_LOCK
- コードの停止: 0x254
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
解放されている SRW ロックは、このスレッドによって取得されませんでした。
考えられる原因この停止は、ロックを取得しなかったスレッド (Param2) によって SRW ロック (Param1) が解放されている場合に生成されます。 これは、正しく取得するのが難しく、アプリケーションによる予期しない動作につながる可能性がある不適切なプログラミング手法を表しています。
- kb - 現在のスタック トレースを取得します。 これは、スレッドが取得しなかった SRW ロックを解放する場所です。
- dps <parameter4> - SRW ロック取得スタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - 現在の ThreadId。
- パラメーター 3 - SRW ロックを取得したスレッドのThreadId。
- パラメーター 4 - 取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- テスト レイヤー: SRWLock
- 停止 ID: INVALID_OWNER
- コードの停止: 0x255
- 重要度: 警告
- 1 回限りエラー:
- エラー レポート: なし
- ファイルにログを記録する: はい
- バックトレースの作成: はい
解放されるメモリには、アクティブな SRW ロックが含まれています。
考えられる原因この停止は、解放されているメモリ アドレス (Param1) に、まだ使用中のアクティブな SRW ロックが含まれている場合に生成されます。 これにより、クラッシュやハングなど、アプリケーションによる予期しない動作が発生する可能性があります。
- kb - 現在のスタック トレースを取得します。 ここで、アクティブな SRW ロックを含むメモリが解放されます。
- dps <parameter4> - SRW ロック取得スタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - 解放されるメモリのアドレス。
- パラメーター 3 - SRW ロックを取得したスレッドのThreadId。
- パラメーター 4 - 取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- テスト レイヤー: SRWLock
- 停止 ID: IN_FREED_MEMORY
- コードの停止: 0x256
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
アンロードされる DLL には、アクティブな SRW ロックが含まれています。
考えられる原因この停止は、アンロード中の DLL (Param2) に、まだ使用中のアクティブな SRW ロック (Param1) が含まれている場合に生成されます。 これにより、クラッシュやハングなど、アプリケーションによる予期しない動作が発生する可能性があります。
- kb - 現在のスタック トレースを取得します。 ここで、アクティブな SRW ロックを含む DLL がアンロードされます。
- du <parameter2> - アンロードされる DLL の名前を検索します。
- dps <parameter4> - SRW ロック取得スタック トレースを取得します。
- パラメーター 1 - SRW ロック
- パラメーター 2 - アンロードされる DLL の名前のアドレス。 名前を表示するには、du <address> を使用します。
- パラメーター 3 - SRW ロックを取得したスレッドのThreadId。
- パラメーター 4 - 取得スタック トレースのアドレス。 dps <address> を使用して、SRW ロックが取得された場所を確認します。
- テスト レイヤー: SRWLock
- 停止 ID: IN_UNLOADED_DLL
- コードの停止: 0x257
- 重要度: 警告
- 1 回限りエラー:
- エラー レポート: なし
- ファイルにログを記録する: はい
- バックトレースの作成: はい
シャットダウン パスで SRW ロックが取得されているため、ハングする可能性があります。
考えられる原因この停止は、シャットダウン パスで SRW ロック (Param1) が取得されている場合に生成されます。 SRW ロックはシャットダウンに対応していません。 (プロセスのシャットダウンまたはその他の理由により) 孤立した SRW ロックを取得しようとすると、ハングします。 シャットダウン パスで ConditionVariableSRW を呼び出すと、この呼び出し中にロックが解放されて取得されると、この検証ツールが停止する可能性もあります。 この停止をデバッグするには:
- kb - 現在のスタック トレースを取得します。 ここで、シャットダウン パスで SRW ロックが取得されます。
- パラメーター 1 - SRW ロック
- パラメーター 2 - 使用しない
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: SRWLock
- 停止 ID: ACQUIRE_ON_SHUTDOWN_PATH
- コードの停止: 0x258
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスタック トレースのハンドル例外が無効です。
考えられる原因スタックの上部にある関数がシステム ルーチンに無効なハンドルを渡した場合、この停止が生成されます。 通常、単純な kb コマンドは、渡されたハンドルの値を明らかにします (通常は最初のパラメーターのいずれかである必要があります)。 値が null の場合、これは明らかに間違っています。 値が問題ない場合は、!htrace デバッガー拡張機能を使用して、このハンドル値に関連する操作の履歴を取得する必要があります。 ほとんどの場合、ハンドル値は閉じられた後に使用される必要があります。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 例外コード
- Parameter 2 - 例外レコード。 .exr を使用して表示します。
- Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: INVALID_HANDLE
- コードの停止: 0x300
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスタック トレースに使用されている TLS インデックスが無効です。
考えられる原因この停止は、スタックの上部にある関数が無効な TLS インデックスを TLS システム ルーチンに渡した場合に生成されます。 通常、単純な kb コマンドは、何が間違っているかを明らかにします。 ここでの一般的なバグは、TlsAlloc を呼び出す代わりに、TLS インデックスの特定の値を想定することです。 これは、常に値 N を取得するため、TlsAlloc を呼び出す必要がない、または初期化されていない変数のためにより頻繁に呼び出す必要がないと考えることで発生する可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Invalid TLS インデックス。
- パラメーター 2 - インデックスの下部を展開しました。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: INVALID_TLS_VALUE
- コードの停止: 0x301
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
WaitForMultipleObjects 呼び出しのパラメーターが無効です。
考えられる原因この停止は、待機するハンドルの配列のアドレスとして NULL を持つ WaitForMultipleObjects というスタックの上部にある関数が、ハンドルの数として 0 を指定した場合に生成されます。 単純な kb コマンドを実行すると、この API を正しく呼び出す関数が表示されません。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - オブジェクト ハンドル ベクターのアドレス。
- パラメーター 2 - ハンドルの数。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: INCORRECT_WAIT_CALL
- コードの停止: 0x302
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
パラメーターとして渡される NULL ハンドル。 有効なハンドルを使用する必要があります。
考えられる原因スタックの上部にある関数が NULL ハンドルをシステム ルーチンに渡した場合、この停止が生成されます。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: NULL_HANDLE
- コードの停止: 0x303
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
DllMain でスレッド ハンドルを待機しています。
考えられる原因この停止は、現在のスレッドが現在のプロセスで読み込まれた DLL の DllMain 関数内でコードを現在実行しており、WaitForSingleObject または WaitForMultipleObjects を呼び出して、同じプロセス内のスレッド ハンドルを待機する場合に生成されます。 2 番目のスレッドが終了しない限り、スレッド ハンドルは通知されないため、デッドロックにつながる可能性が最も高くなります。 2 番目のスレッドが ExitThread を呼び出すと、DLL ローダー ロックの取得が試行され、現在のプロセス内のすべての DLL に対して DllMain (DLL_THREAD_DETACH) が呼び出されます。 ただし、ローダー ロックは最初のスレッド (スレッド ハンドルで待機しているスレッド) によって所有されているため、2 つのスレッドはデッドロックします。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Thread ハンドル。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: WAIT_IN_DLLMAIN
- コードの停止: 0x304
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ハンドルのオブジェクトの種類が正しくありません。
考えられる原因この停止は、現在のスレッドが、正しくないオブジェクト型のオブジェクトへのハンドルを使用して API を呼び出している場合に生成されます。 たとえば、セマフォ ハンドルをパラメーターとして SetEvent を呼び出すと、この停止が生成されます。 この停止をデバッグするには:
- kb - 現在のスタック トレースを表示します。 原因は、おそらく verifier.dllを呼び出しているDLLです。
- du <parameter2> - ハンドルの実際の型を表示します。 ハンドル値は parameter1 です。 上記の例では、"Semaphore" と表示されます。
- du <parameter3> - API で予期されるオブジェクトの種類を表示します。 上記の例では、この名前は "Event" になります。
- !htrace <parameter1> は、このハンドルに対する最近のオープン/クローズ操作のスタック トレースを表示するため、役に立つ場合があります。
- Parameter 1 - ハンドル値。
- パラメーター 2 - Object 型名。 du を使用して表示する
- パラメーター 3 - Expected オブジェクト型名。 du を使用して表示する
- Parameter 4 - 使用されていません。
- テスト レイヤー: ハンドル
- 停止 ID: INCORRECT_OBJECT_TYPE
- コードの停止: 0x305
- 重要度: エラー
- 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
- コードの停止: 0x350
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
破損した検証ツールの TLS 構造。
考えられる原因この停止は、スレッドの TLS スロットの状態を格納するために使用される内部検証ツール構造が破損している場合に生成されます。 これは、プロセス内のいくつかのランダムな破損が原因である可能性が非常に高いです。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - TEB アドレス。
- パラメーター 2 - TEB アドレスを拡張しました。
- パラメーター 3 - Thread ID。
- パラメーター 4 - Expected スレッド ID。
- テスト レイヤー: TLS
- 停止 ID: CORRUPTED_TLS
- コードの停止: 0x351
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効な TLS インデックスを使用しています。
考えられる原因無効な TLS インデックスが使用されている場合、この停止が生成されます。 ほとんどの場合、TlsFree が呼び出されたときにコードがこのインデックスを使用しているためです。 スレッドプール スレッドの例を次に示します。 T1: Dll の読み込みと TlsAlloc T1: キュー コールバック T1: スキップされた待機/キャンセルされたコールバック T1: TlsFree T2: コールバックの実行と TlsSetValue T1 の呼び出し: Dll のアンロード
アプリケーション検証ツールによって表示される情報- パラメーター 1 - TLS インデックス
- パラメーター 2 - 使用できません。
- パラメーター 3 - 使用できません。
- パラメーター 4 - 使用できません。
- テスト レイヤー: TLS
- 停止 ID: INVALID_TLS_INDEX
- コードの停止: 0x352
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
サイズまたは開始アドレスが無効な仮想メモリ ブロックを解放します。
考えられる原因この停止は、アプリ検証ツールが、無効な開始アドレスまたはメモリ割り当てのサイズを持つ VirtualFree または DLL アンロードを検出した場合に生成されます。 DLLアンロードの場合、これはおそらく読み込まれたDLLリスト内のメモリ破損を意味します。 この停止をデバッグするには、現在のスタック トレースと、解放されようとしているメモリ アドレスとサイズを調べて、無効な理由を判断してみてください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 割り当てベース アドレス。
- パラメーター 2 - Memory 領域のサイズ。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_FREEMEM
- コードの停止: 0x600
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
仮想アロケーション呼び出しが正しくありません。
考えられる原因この停止は、アプリ検証ツールが、無効な開始アドレスまたはメモリ割り当てのサイズを持つ VirtualAlloc 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) と、割り当てようとしているメモリ アドレスとサイズを調べて、無効な理由を判断してみてください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 割り当てベース アドレスへのポイント。
- パラメーター 2 - Pointer からメモリ領域のサイズ。
- パラメーター 3 - 使用しない
- パラメーター 4 - 使用しない
- テスト レイヤー: 記憶
- 停止 ID: INVALID_ALLOCMEM
- コードの停止: 0x601
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
マップ ビューの呼び出しが正しくありません。
考えられる原因この停止は、無効なベース アドレスまたはマッピングのサイズを持つ MapViewOfFile 呼び出しをアプリ検証ツールが検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) と、マップされるメモリ アドレスとサイズを確認し、無効な理由を判断します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Pointer からベース アドレスへのマッピング。
- パラメーター 2 - サイズを表示するPointer。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_MAPVIEW
- コードの停止: 0x602
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効なアドレスをプローブしています。
考えられる原因この停止は、アプリ検証ツールが、プローブするメモリ バッファーの無効なアドレス (通常のユーザー モード アドレスではなくカーネル モード アドレスなど) を持つ IsBadXXXPtr 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が無効なアドレスで終わった理由を特定してみてください。 多くの場合、アドレスは、初期化されていないポインターなど、単純な偽です。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 開始アドレス。
- パラメーター 2 - Memory ブロック サイズ。
- パラメーター 3 - Invalid アドレス。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: PROBE_INVALID_ADDRESS
- コードの停止: 0x603
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
空きメモリのプローブ。
考えられる原因この停止は、アプリ検証ツールが空きメモリ割り当ての IsBadXXXPtr 呼び出しを検出した場合に生成されます。 これは非常に悪いです。これは、他の場合には、このメモリが他の割り当てのために既に再利用されている可能性があるためです。 現在のコード パス (kb) はそのメモリを所有していないため、他のユーザーのメモリが壊れ、悲惨な影響を受ける可能性があります。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が空きメモリをプローブした理由を特定してみてください。 アドレスは、単純な偽の (初期化されていないポインターなど) か、既に解放されているメモリである可能性があります。 メモリが VirtualFree または UnmapViewOfFile API のいずれかによって既に解放されている場合、'!avrf -vs -a parameter3' は、そのアドレスを割り当てた/解放したコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 これにより、このメモリを解放したスタック トレースが表示される場合があります。 多くの場合、メモリは既に解放されたヒープ割り当てです。 その可能性を確認するために、'!avrf -hp -a parameter3' は、ヒープとの間でそのアドレスを割り当てたり解放したりしたコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 開始アドレス。
- パラメーター 2 - Memory ブロック サイズ。
- パラメーター 3 - 空きメモリ ページのアドレス。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: PROBE_FREE_MEM
- コードの停止: 0x604
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ガード ページのプローブ。
考えられる原因この停止は、アプリ検証ツールが、少なくとも 1 つのGUARD_PAGEを含むメモリ割り当ての IsBadXXXPtr 呼び出しを検出した場合に生成されます。 このGUARD_PAGEがスレッドの現在のスタックの末尾である可能性が非常に高いため、これは非常に悪いです。 MSDN ライブラリに記載されているように、無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元がGUARD_PAGEをプローブした理由を特定してみてください。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 開始アドレス。
- パラメーター 2 - Memory ブロック サイズ。
- パラメーター 3 - ガード ページのアドレス。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: PROBE_GUARD_PAGE
- コードの停止: 0x605
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
NULL アドレスのプローブ。
考えられる原因この停止は、アプリ検証ツールが NULL アドレスを持つ IsBadXXXPtr 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が NULL アドレスで終わった理由を特定してみてください。 これは通常、メモリ割り当て関数の 1 つの戻り値をチェックしないユーザーの兆候です。 たとえば、次のコードは正しくありません。
int main (void)
{
PVOID p;
p = malloc (1024);
Use (p);
return 0;
}
void Use (PVOID p)
{
if (IsBadReadPtr (p)) {
return;
}
//
// p is safe to be used here.
//
}
このコードは、次のように書き直す必要があります。
int main (void)
{
PVOID p;
p = malloc (1024);
if (NULL == p)) {
return -1;
}
Use (p);
return 0;
}
void Use (PVOID p)
{
//
// p is safe to be used here.
//
}
MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: PROBE_NULL
- コードの停止: 0x606
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効な開始アドレスまたはサイズを持つメモリ ブロックのプローブ。
考えられる原因この停止は、アプリ検証ツールが、無効な開始アドレス (通常のユーザー モード アドレスではなくカーネル モード アドレスなど) またはメモリ バッファーがプローブされる無効なサイズで IsBadXXXPtr 呼び出しを検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、IsBadXXXPtr 関数の呼び出し元が無効なアドレスまたはサイズで終わった理由を特定してみてください。 多くの場合、アドレスまたはサイズは、初期化されていない変数など、単純な偽です。 MSDN ライブラリには、アプリケーションで IsBadXXXPtr API を使用すべきでない理由がいくつか示されています。プリエンプティブ マルチタスク環境では、他のスレッドがテスト対象のメモリへのプロセスのアクセスを変更する可能性があります。 無効なポインターを逆参照すると、他のスレッドのスタック拡張が無効になることがあります。 スタック拡張が無効になっている場合、スタックを使い果たすスレッドは、ポップアップ エラー ウィンドウや診断情報なしで、親プロセスを直ちに終了します。 プロセス内のスレッドは、他のスレッドが必要とするメモリを解放しないように連携することが期待されます。 この関数を使用しても、これを行う必要はありません。 これを行わないと、予期しない方法でアプリケーションが失敗する可能性があります。 これらすべての理由から、これらの API は使用しないでください。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 開始アドレス。
- パラメーター 2 - Memory ブロック サイズ。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: PROBE_INVALID_START_OR_SIZE
- コードの停止: 0x607
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
サイズまたは開始アドレスが無効な DLL をアンロードしています。
考えられる原因この停止は、アプリ検証ツールが無効な開始アドレスまたは DLL メモリ範囲のサイズを持つ DLL アンロードを検出した場合に生成されます。 これはおそらく、読み込まれた内部 ntdll.dll DLL リスト内のメモリ破損を意味します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - DLL メモリ ベース アドレス。
- パラメーター 2 - DLL メモリ範囲のサイズ。
- パラメーター 3 - DLL 名アドレス。 du を使用してダンプします。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_DLL_RANGE
- コードの停止: 0x608
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスレッドのスタック アドレス範囲内のメモリ ブロックを解放する。
考えられる原因この停止は、アプリ検証ツールが、現在のスレッドのスタック (!) の実際に一部であるメモリ ブロックに対して VirtualFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、VirtualFree を呼び出した関数が、メモリ ブロックが動的に割り当てられているか、マップされているが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 割り当てベース アドレス。
- パラメーター 2 - Memory 領域のサイズ。
- パラメーター 3 - 下限アドレスをスタックします。
- パラメーター 4 - スタックの上限アドレス。
- テスト レイヤー: 記憶
- 停止 ID: FREE_THREAD_STACK_MEMORY
- コードの停止: 0x609
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
VirtualFree 操作の FreeType パラメーターが正しくありません。
考えられる原因この停止は、アプリ検証ツールが FreeType パラメーターの正しくない値を持つ VirtualFree を検出した場合に生成されます。 このパラメーターに使用できる値は、MEM_DECOMMITとMEM_RELEASEの 2 つだけです。 これら 2 つを除く他の値で VirtualFree が呼び出されると、VirtualFree はメモリを解放できません。 この停止をデバッグするには、現在のスタック トレース (kb) を調べます。VirtualFree の呼び出し元が原因である可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - アプリケーションで使用されるIncorrect 値。
- パラメーター 2 - 正しい値 1 を使用しました。
- パラメーター 3 - 正しい値 2 を使用しました。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_FREE_TYPE
- コードの停止: 0x60A
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
既に空いている仮想メモリ ブロックを解放しようとしています。
考えられる原因この停止は、アプリ検証ツールが既に空きアドレスの VirtualFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を確認し、メモリが既に空いているが、アプリケーションがもう一度解放しようとしている理由を判断してみてください。 '!avrf -vs -a parameter1' は、そのアドレスを割り当てたり解放したりしたコード パスのスタック トレースのログを検索し、使用可能な場合はこれらのスタック トレースを表示します。 これにより、このメモリを解放したスタック トレースが表示される場合があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Memory ブロック アドレス。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: MEM_ALREADY_FREE
- コードの停止: 0x60B
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
VirtualFree (MEM_RELEASE) 操作の Size パラメーターが正しくありません。
考えられる原因この停止は、アプリ検証ツールが dwSize パラメーターの 0 以外の値を持つ VirtualFree (MEM_RELEASE) を検出した場合に生成されます。 MEM_RELEASEを使用する場合、このパラメーターに使用できる値は 0 のみです。 VirtualFree が 0 以外の他の値で呼び出された場合、VirtualFree はメモリの解放に失敗します。 この停止をデバッグするには、現在のスタック トレース (kb) を調べます。VirtualFree の呼び出し元が原因である可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - アプリケーションで使用されるIncorrect サイズ。
- パラメーター 2 - 正しいサイズ (0) を使用しました。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_FREE_SIZE
- コードの停止: 0x60C
- 重要度: エラー
- 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 - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。
- < パラメーター 4> は内部検証ツール構造のアドレスであり、ほとんどの検証ツール ユーザーにとって意味はありません。
- パラメーター 1 - DLL 名 (du を使用してダンプします)。
- Parameter 2 - 例外レコード。 .exr を使用して表示します。
- Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
- パラメーター 4 - Verifier dll 記述子
- テスト レイヤー: 記憶
- 停止 ID: DLL_UNEXPECTED_EXCEPTION
- コードの停止: 0x60D
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッド関数で予期しない例外が発生しました。
考えられる原因この停止は、スレッド関数が例外を発生させている場合に生成されます。 プロセス全体が強制終了されるため、これは不適切です。 この停止をデバッグするには:
- < parameter1>は、例外の種類に対して重要な場合があります。 例えば、例外コードC0000005アクセス違反を意味します。
- .exr <parameter2> - 例外情報を表示します。
- .cxr <parameter3> kb - 例外コンテキスト情報を表示します。
- Parameter 1 - 例外コード
- Parameter 2 - 例外レコード。 .exr を使用して表示します。
- Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: THREAD_UNEXPECTED_EXCEPTION
- コードの停止: 0x60E
- 重要度: エラー
- 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 - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。
- Parameter 1 - 例外コード
- Parameter 2 - 例外レコード。 .exr を使用して表示します。
- Parameter 3 - コンテキスト レコード。 .cxr を使用して表示します。
- パラメーター 4 - 使用しない
- テスト レイヤー: 記憶
- 停止 ID: PROBE_UNEXPECTED_EXCEPTION
- コードの停止: 0x60F
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
NULL アドレスをリセットしようとしています。
考えられる原因この停止は、アプリ検証ツールが NULL の最初のパラメーターを持つ VirtualFree (MEM_RESET) 呼び出しを検出した場合に生成されます。 MEM_RESETは既に割り当てられているメモリに対してのみ使用する必要があるため、この場合、NULL は有効な最初のパラメーターではありません。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_MEM_RESET
- コードの停止: 0x610
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスレッドのスタック アドレス範囲内のヒープ メモリ ブロックを解放する。
考えられる原因この停止は、現在のスレッドのスタック (!) に実際に含まれるメモリ ブロックに対して、アプリ検証ツールが HeapFree を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、HeapFree を呼び出した関数が、メモリ ブロックが動的に割り当てられているか、またはマップされたが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 割り当てベース アドレス。
- パラメーター 2 - Memory 領域のサイズ。
- パラメーター 3 - 下限アドレスをスタックします。
- パラメーター 4 - スタックの上限アドレス。
- テスト レイヤー: 記憶
- 停止 ID: FREE_THREAD_STACK_MEMORY_AS_HEAP
- コードの停止: 0x612
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスレッドのスタック アドレス範囲内のメモリ領域のマッピングを解除します。
考えられる原因この停止は、現在のスレッドのスタック (!) に実際に含まれるメモリ ブロックに対して、アプリ検証ツールが UnmapViewOfFile を検出した場合に生成されます。 この停止をデバッグするには、現在のスタック トレース (kb) を調べて、UnmapViewOfFile を呼び出した関数がメモリ ブロックが動的に割り当てられているか、マップされているが、実際にはスタックから割り当てられたメモリであると考えた理由を理解しようとします。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 割り当てベース アドレス。
- パラメーター 2 - Memory 領域のサイズ。
- パラメーター 3 - 下限アドレスをスタックします。
- パラメーター 4 - スタックの上限アドレス。
- テスト レイヤー: 記憶
- 停止 ID: FREE_THREAD_STACK_MEMORY_AS_MAP
- コードの停止: 0x613
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
RTL_RESOURCE アドレスが正しくありません。
考えられる原因この停止は、アプリケーションが NULL またはその他の正しくないアドレス (カーネル モード アドレスなど) を有効なオブジェクトのアドレスとして使用しようとしている場合に生成されます。 RtlInitializeResource (NULL) は、この種の検証ツールの停止をトリガーする不適切な API 呼び出しです。 param1 は正しくないアドレスで、原因はスタック トレース上にあります (kb で表示します)。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Address。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_RESOURCE_ADDRESS
- コードの停止: 0x614
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
クリティカル セクション アドレスが無効です。
考えられる原因この停止は、アプリケーションが NULL またはその他の正しくないアドレス (カーネル モード アドレスなど) を有効なオブジェクトのアドレスとして使用しようとしている場合に生成されます。 EnterCriticalSection(NULL) は、この種の検証ツールの停止をトリガーする不適切な API 呼び出しです。 param1 は正しくないアドレスで、原因はスタック トレース上にあります (kb で表示します)。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Address。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_CRITSECT_ADDRESS
- コードの停止: 0x615
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
実行可能でないメモリでコードの実行を試みます。
考えられる原因この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには:
- u <parameter2> - 犯人コードを組み立てる
- .exr <parameter3> - 例外情報を表示します
- .cxr <parameter4> kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。
- Parameter 1 - アクセス中のアドレス。
- Parameter 2 - 無効なアクセスを実行しているコード。
- Parameter 3 - 例外レコード。 .exr を使用して表示します。
- Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。
- テスト レイヤー: 記憶
- 停止 ID: THREAD_UNEXPECTED_EXCEPTION_CODE
- コードの停止: 0x616
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
出力バッファーの初期化中に予期しない例外が発生しました。
考えられる原因この停止は、Win32 または CRT API の出力パラメーターとして指定されたバッファーの初期化中に例外が発生した場合に生成されます。 これは通常、指定された出力バッファー サイズが正しくないことを意味します。 この停止をデバッグするには:
- .exr <parameter3> - 例外情報を表示します
- .cxr <parameter4> kb - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。
- パラメーター 1 - Buffer の開始アドレス。
- パラメーター 2 - バッファー サイズ。
- Parameter 3 - 例外レコード。 .exr を使用して表示します。
- Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。
- テスト レイヤー: 記憶
- 停止 ID: OUTBUFF_UNEXPECTED_EXCEPTION
- コードの停止: 0x617
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ヒープ ブロック サイズを検索しようとしたときに予期しない例外が発生しました。
考えられる原因この停止は、解放されているヒープ ブロックに対して HeapSize を呼び出しているときに例外が発生した場合に生成されます。 これは通常、指定されたヒープ ブロック アドレスが正しくないか、ヒープが破損していることを意味します。 この停止をデバッグするには:
- .exr <parameter3> - 例外レコードを表示する
- .cxr <parameter4> kb - 例外が発生した時点で例外コンテキスト情報とスタック トレースを表示します。
- パラメーター 1 - 解放されているヒープ ブロックのアドレス。
- パラメーター 2 - Heap ハンドル。
- Parameter 3 - 例外レコード。 .exr を使用して表示します。
- Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。
- テスト レイヤー: 記憶
- 停止 ID: SIZE_HEAP_UNEXPECTED_EXCEPTION
- コードの停止: 0x618
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効な開始アドレスを持つメモリ ブロックを解放しています。
考えられる原因この停止は、ページの領域が予約されたときに VirtualAlloc または VirtualAllocEx 関数によって返されるベース アドレスではない lpAddress パラメーターを指定して VirtualFree (MEM_RELEASE) を呼び出した場合に生成されます。この停止をデバッグするには:
- kb - VirtualFree を呼び出している現在のスタック トレースを表示します。 考えられる原因は、VirtualFree を呼び出す DLL です。
- パラメーター 1 - 解放されているメモリ ブロックのアドレス。
- パラメーター 2 - 正しいメモリ ブロック アドレスを指定しました。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_FREEMEM_START_ADDRESS
- コードの停止: 0x619
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効な開始アドレスを持つメモリ ブロックのマッピングを解除します。
考えられる原因この停止は、プログラムが、MapViewOfFile または MapViewOfFileEx 関数の前回の呼び出しによって返された値と同じではない lpBaseAddress パラメーターを使用して UnmapViewOfFile を呼び出した場合に生成されます。 この停止をデバッグするには:
- kb - UnmapViewOfFile を呼び出している現在のスタック トレースを表示します。 考えられる原因は、UnmapViewOfFile を呼び出す DLL です。
- パラメーター 1 - マップ解除中のメモリ ブロックのアドレス。
- パラメーター 2 - 正しいメモリ ブロック アドレスを指定しました。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: INVALID_UNMAPVIEW_START_ADDRESS
- コードの停止: 0x61A
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
threadpool コールバック関数で予期しない例外が発生しました。
考えられる原因この停止は、スレッド プール スレッドのコールバック関数が例外を発生させている場合に生成されます。 この停止をデバッグするには:
- < parameter1>は、例外の種類に対して重要な場合があります。 たとえば、例外コードC0000005アクセス違反を意味します。
- .exr <parameter2> - 例外情報を表示します。
- .cxr <parameter3> kb - 例外コンテキスト情報を表示します。
- パラメーター 1 - Exception コード
- Parameter 2 - 例外レコード。 .exr を使用して表示する
- Parameter 3 - コンテキスト レコード。 .cxr を使用して表示する
- パラメーター 4 - 使用しない
- テスト レイヤー: 記憶
- 停止 ID: THREADPOOL_UNEXPECTED_EXCEPTION
- コードの停止: 0x61B
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
非実行可能メモリ内のコード
考えられる原因この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには:
- u <parameter2> - 犯人コードを組み立てる
- .exr <parameter3> - 例外情報を表示します
- .cxr <parameter4> kb - 例外が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。
- パラメーター 1 - アクセス中のアドレス
- パラメーター 2 - 無効なアクセスを実行しているコード
- Parameter 3 - 例外レコード。 .exr を使用して表示します。
- Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。
- テスト レイヤー: 記憶
- 停止 ID: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
- コードの停止: 0x61C
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
実行可能ヒープの作成。
考えられる原因この停止は、アプリケーションが実行可能ヒープを作成している場合に生成されます。 これはセキュリティ 上のリスクになる可能性があります。
アプリケーション検証ツールによって表示される情報- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: EXECUTABLE_HEAP
- コードの停止: 0x61D
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
実行可能メモリの割り当て。
考えられる原因この停止は、アプリケーションが実行可能メモリを割り当てる場合に生成されます。 これはセキュリティ 上のリスクになる可能性があります。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 呼び出し元によって指定されたページ保護。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: 記憶
- 停止 ID: EXECUTABLE_MEMORY
- コードの停止: 0x61E
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
非実行可能メモリでコードの実行を試みます (最初のチャンス)。
考えられる原因この停止は、アプリケーションが実行可能でないアドレスまたは空きアドレスからコードを実行しようとしている場合に生成されます。 この停止をデバッグするには:
- u <parameter2> - 犯人コードを組み立てる
- .exr <parameter3> - 例外情報を表示します
- .cxr <parameter4>kb - 例外 が発生した時刻の例外コンテキスト情報とスタック トレースを表示します。
- Parameter 1 - アクセス中のアドレス。
- Parameter 2 - 無効なアクセスを実行しているコード。
- Parameter 3 - 例外レコード。 .exr を使用して表示します。
- Parameter 4 - コンテキスト レコード。 .cxr を使用して表示します。
- テスト レイヤー: 例外
- 停止 ID: FIRST_CHANCE_ACCESS_VIOLATION_CODE
- コードの停止: 0x650
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
このスレッド プール スレッドの優先順位が変更されました。
考えられる原因この停止は、スレッド プールに返されるときにスレッドの優先度が変更された場合に生成されます。
アプリケーション検証ツールによって表示される情報- Format: - Callback (%p) を実行したスレッド プール スレッド (%x) には、変更されたスレッド優先度 (%i -> %i) があります。
- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 現在の優先度。
- テスト レイヤー: Threadpool
- 停止 ID: INCONSISTENT_PRIORITY
- コードの停止: 0x700
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
このスレッドプール スレッドのアフィニティが変更されました。
考えられる原因この停止は、スレッド・アフィニティがスレッド・プールに戻されるときに変更された場合に生成されます。
アプリケーション検証ツールによって表示される情報- Format: - threadpool thread (%x) が実行されたコールバック (%p) には、変更されたスレッド アフィニティ マスク (%p -> %p) があります。
- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 現在のアフィニティ。
- テスト レイヤー: Threadpool
- 停止 ID: INCONSISTENT_AFFINITY_MASK
- コードの停止: 0x701
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
現在のスレッドのメッセージ プール内の未処理のメッセージ。
考えられる原因このスレッド プール スレッドがプールに返されるときに、未処理のメッセージが残っている場合、この停止が生成されます。 まったく異なるコンテキストで処理されるため、危険です。 このスレッドに投稿されたメッセージを表示するには、!avrf -tp < Param4> を使用してください。
アプリケーション検証ツールによって表示される情報- Format: - コールバック (%p) を実行したthreadpool スレッド (%x) には、未処理のウィンドウ メッセージ (%x: %x) があります。
- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - Threadpool スレッド ID。!avrf -tp < threadid> を使用して、このスレッドに投稿されたメッセージを確認してください。
- テスト レイヤー: Threadpool
- 停止 ID: ORPHANED_THREAD_MESSAGE
- コードの停止: 0x702
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
閉じていないウィンドウは、現在のスレッドに属しています。
考えられる原因このスレッド プール スレッドがプールに返されるときに、ウィンドウが保持されている場合、この停止が生成されます。
アプリケーション検証ツールによって表示される情報- Format: - Callback (%p) を実行したスレッドプール スレッド (%x) には、メッセージを受信できる有効な hwnd (%x: %s) があります
- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - Threadpool スレッド ID。
- テスト レイヤー: Threadpool
- 停止 ID: ORPHANED_THREAD_WINDOW
- コードの停止: 0x703
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッドプール スレッドの ExitThread() です。
考えられる原因この停止は、ExitThread がスレッドプール スレッドで呼び出された場合に生成されます。システムが不安定になるため、禁止されています。 リソース リーク、フリーズ、または AV が発生します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: ILLEGAL_THREAD_EXIT
- コードの停止: 0x704
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッドがスレッド プール スレッドに返されると、スレッドは偽装状態になります。
考えられる原因この停止は、コールバック関数がスレッド トークンを変更して別のユーザーを偽装し、スレッド プールに戻す前にリセットを忘れた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: THREAD_IN_IMPERSONATION
- コードの停止: 0x705
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
永続的なスレッドを必要とする関数が呼び出されます。
考えられる原因一部の Microsoft Windows API は、専用または永続的なスレッド内で呼び出す必要があります。 スレッド プールでは、通常、スレッド ローカル ストレージを使用したり、RegNotifyChangeKeyValue 関数などの永続的なスレッドを必要とする非同期呼び出しをキューに入れないようにする必要があります。 ただし、このような関数は、queueUserWorkItem と WT_EXECUTEINPERSISTENTTHREAD オプションを使用して、永続的なワーカー スレッドにキューに登録できます。 デバッガーの KB によって呼び出し元が表示されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: PERSISTED_THREAD_NEEDED
- コードの停止: 0x706
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッドがダーティ トランザクション状態です。
考えられる原因この停止は、コールバック関数が現在のトランザクション ハンドルを閉じるかリセットするのを忘れた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - Transaction ハンドル。
- テスト レイヤー: Threadpool
- 停止 ID: DIRTY_TRANSACTION_CONTEXT
- コードの停止: 0x707
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
このスレッド プールの状態では、CoInit 呼び出しと CoUnInit 呼び出しが不均衡になっています。
考えられる原因この停止は、コールバック関数が CoInit を呼び出し、CoUnInit が不均衡な場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - Balanced 呼び出し数。
- テスト レイヤー: Threadpool
- 停止 ID: DIRTY_COM_STATE
- コードの停止: 0x708
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
タイマー オブジェクトのパラメーターに一貫性がありません。 タイマーの作成時にWT_EXECUTEONLYONCEを指定する場合は、ピリオドを 0 にする必要があります
考えられる原因タイマーが WT_EXECUTEONLYONCE フラグで 1 回だけ通知するように設定されている場合、タイマーを通知する期間が 0 でない場合に、この停止が生成されます
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Period が指定されました。
- パラメーター 2 - Flags が指定されました。
- パラメーター 3 - 使用できません。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: INCONSISTENT_TIMER_PARAMS
- コードの停止: 0x709
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ローダー ロックは、コールバック内のスレッドプール スレッドによって保持されています。
考えられる原因この停止は、ローダー ロックがコールバック内で保持され、スレッドがスレッド プールに返されるときに解放されない場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: LOADER_LOCK_HELD
- コードの停止: 0x70A
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
優先言語は、コールバック内のスレッドプール スレッドによって設定されます。
考えられる原因この停止は、優先言語がコールバック内で設定され、スレッドがスレッド プールに返されるときにクリアされない場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: PREFERRED_LANGUAGES_SET
- コードの停止: 0x70B
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
バックグラウンド優先度は、コールバック内のスレッドプール スレッドによって設定されます。
考えられる原因この停止は、バックグラウンド優先度がコールバック内で設定され、スレッドがスレッド プールに返されるときに無効にならない場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - Callback 関数。
- パラメーター 2 - Context。
- パラメーター 3 - Threadpool オブジェクトの割り当てスタック トレースでは、dps を使用してダンプします。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: BACKGROUND_PRIORITY_SET
- コードの停止: 0x70C
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
スレッドプール スレッドの TerminateThread() です。
考えられる原因この停止は、スレッドプール スレッドで TerminateThread が呼び出された場合に生成されます。 システムが不安定になるため、禁止されています。 リソース リーク、フリーズ、または AV が発生します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 使用できません。
- パラメーター 2 - 使用できません。
- パラメーター 3 - 使用できません。
- パラメーター 4 - 使用できません。
- テスト レイヤー: Threadpool
- 停止 ID: ILLEGAL_THREAD_TERMINATION
- コードの停止: 0x70D
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
非同期 I/O 操作が保留中のときにスタックがアンワインドされました。
考えられる原因この停止は、アプリケーションがスタック変数を使用する I/O 操作を発行し、I/O の完了を待機していない場合に生成されるため、スタックが破損します。 この停止をデバッグするには:
- dps <パラメーター 4> I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O を発行したスレッドのスタック ベースのアドレスとパラメーター 3 を示します。
- パラメーター 1 - I/O で使用されるスタック変数のアドレス。
- パラメーター 2 - 現在のスタック ポインター。
- パラメーター 3 - I/O を発行したOriginal スレッド。
- パラメーター 4 - I/O が発行されたときのスタック トレース。
- テスト レイヤー: イオ
- 停止 ID: ASYNCIO_STACK_UNWIND
- コードの停止: 0x800
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
非同期 I/O 操作が保留中のときにスタックが破損しました。
考えられる原因この停止は、アプリケーションがスタック変数を使用する I/O 操作を発行し、I/O の完了を待機していない場合に生成されるため、スタックが破損します。 この停止をデバッグするには:
- dps <パラメーター 4> I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O を発行したスレッドのスタック ベースのアドレスとパラメーター 3 を示します。
- パラメーター 1 - I/O で使用されるスタック変数のアドレス。
- パラメーター 2 - 現在のスタック ポインター。
- パラメーター 3 - I/O を発行したOriginal スレッド。
- パラメーター 4 - I/O が発行されたときのスタック トレース。
- テスト レイヤー: イオ
- 停止 ID: ASYNCIO_CORRUPTED_STACK
- コードの停止: 0x801
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
保留中の I/O 操作で解放されたアドレスを使用する。
考えられる原因この停止は、アプリケーションが I/O 操作を発行し、I/O が完了する前に I/O で使用されているメモリを解放した場合に生成され、メモリの破損などが発生します。この停止をデバッグするには:
- dps <パラメーター4> - I/O が発行されたときにスタック トレースを表示します。 Parameter1 は、I/O で使用されるアドレスを示します。 Parameter2 は、解放されるアドレスと、I/O を発行したスレッドの parameter3 を示します。
- パラメーター 1 - I/O で使用されるアドレス。
- パラメーター 2 - Address が解放されています。
- パラメーター 3 - I/O を発行したOriginal スレッド。
- パラメーター 4 - I/O が発行されたときのスタック トレース。
- テスト レイヤー: イオ
- 停止 ID: FREED_ADDRESS_IN_PENDINGIO
- コードの停止: 0x802
- 重要度: エラー
- 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 を発行したOriginal スレッド。
- パラメーター 3 - I/O が発行されたときのスタック トレース。
- パラメーター 4 - 使用できません。
- テスト レイヤー: イオ
- 停止 ID: REUSED_IOSTATUS_BLOCK
- コードの停止: 0x803
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
サポートされていないフラグを使用して CreateFile にFILE_ATTRIBUTE_NOT_CONTENT_INDEXEDする
考えられる原因古いバージョンの MSDN では、FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDをサポートする CreateFile が誤って記載されています。 このフラグが意図されている場合は、SetFileAttributes などの他の API 関数を使用して設定する必要があります。
- ln <parameter1> - CreateFile の呼び出し元を検索します。
- Format: - フラグ %08x %08x %08x を使用して %hs%ws を書き込むときに CreateFile を作成する
- パラメーター 1 - アドレスを返します。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: イオ
- 停止 ID: USING_BAD_CREATEFILE_FLAG
- コードの停止: 0x804
- 重要度: 警告
- 1 回限りエラー:
- エラー レポート: なし
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ヒープ割り当てがリークされました。
考えられる原因この停止は、リソースの所有中に割り当ての所有者 dll が動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - リークした割り当てのアドレス。 !heap -p -a < address> を実行して、割り当てに関する追加情報を取得します。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: 割り当て
- コードの停止: 0x900
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
ハンドルがリークされました。
考えられる原因この停止は、リソースの所有中にハンドルの所有者 dll が動的にアンロードされた場合に生成されます。 この停止をデバッグするには、!htrace parameter1 を実行してハンドルに関する追加情報を取得します。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - リークしたハンドルの値。 !htrace <handle> を実行して、ハンドル トレースが有効になっている場合にハンドルに関する追加情報を取得します。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: ハンドル
- コードの停止: 0x901
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
HKEY がリークされました。
考えられる原因この停止は、リソースの所有中にレジストリ キーの所有者 dll が動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - リークした HKEY の値。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: 記帳
- コードの停止: 0x902
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
仮想予約がリークされました。
考えられる原因この停止は、リソースの所有中に仮想予約の所有者 dll が動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 予約アドレス。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: VIRTUAL_RESERVATION
- コードの停止: 0x903
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
BSTR がリークされました。
考えられる原因この停止は、リソースの所有中に SysString の所有者 dll が動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - リークした BSTR のアドレス。 !heap -p -a < address> を実行して、割り当てに関する追加情報を取得します。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: SYSSTRING
- コードの停止: 0x904
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
電源通知の登録が解除されませんでした。
考えられる原因この停止は、dll が電源通知に登録され、登録を解除せずに動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - 電源通知登録のアドレス。
- パラメーター 2 - 登録スタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: POWER_NOTIFICATION
- コードの停止: 0x905
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
COM 割り当てがリークされました。
考えられる原因この停止は、リソースの所有中に COM 割り当ての所有者 dll が動的にアンロードされた場合に生成されます。
アプリケーション検証ツールによって表示される情報- パラメーター 1 - リークした COM 割り当てのアドレス。 !heap -p -a < address> を実行して、割り当てに関する追加情報を取得します。
- パラメーター 2 - 割り当てスタック トレースへのアドレス。 dps <address> を実行して、割り当てスタックを表示します。
- パラメーター 3 - 所有者 dll 名のアドレス。 du <address> を実行して dll 名を読み取ります。
- パラメーター 4 - 所有者 dll のベース。 .reload <dll_name> = <address> を実行して所有者 dll を再読み込みします。 読み込まれたモジュールとアンロードされたモジュールに関する詳細情報を取得するには、'lm' を使用します。
- テスト レイヤー: 漏る
- 停止 ID: COM_ALLOCATION
- コードの停止: 0x906
- 重要度: エラー
- 1 回限りエラー:
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
こちらもご覧ください
アプリケーション検証ツール - アプリケーション検証ツール内のテスト