アプリケーション検証ツール - 停止コード - ネットワーク

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

DllMain から呼び出された無効なネットワーク API

考えられる原因

DllMain 内からの呼び出しをサポートしていないネットワーク API への呼び出しが行われました。 Win32 ネットワーク API だけでなく、多くの Win32 API を DllMain から呼び出すことはできません。 詳細については、MSDN ライブラリの DllMain に関するドキュメントを参照してください。 呼び出しを行ったルーチンを識別するには、デバッガーで 'k' コマンドを使用して、現在のスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報

追加情報

閉じた SOCKET の使用を試みる

考えられる原因

SOCKET は、閉じられた後に使用されました。 閉じた SOCKET を使用しようとしたルーチンを識別するには、デバッガーで 'k' コマンドを使用して、現在のスタック トレースをダンプします。 SOCKET を閉じたルーチンのスタック・トレースをダンプするには、停止の 2 番目のパラメーターと共に dps コマンドを使用します。

アプリケーション検証ツールによって表示される情報

追加情報

不明な SOCKET の使用を試みる

考えられる原因

Winsock の呼び出しによって作成されなかった SOCKET に不明な値を使用しようとしました。 このアクションを試行したルーチンのスタック トレースを表示するには、デバッガーで 'k' コマンドを使用します。

アプリケーション検証ツールによって表示される情報

追加情報

リークした SOCKET ハンドルが検出されました

考えられる原因

Winsock 基本サービス プロバイダーから開いている SOCKET が、アンロード中の DLL からリークされたことが検出されました。 この停止をトラブルシューティングするには、この検証ツール停止の 2 番目のパラメーターでデバッガーで dps コマンドを使用して、SOCKET ハンドルを開いたスレッドのスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報

追加情報

閉じた SOCKET の使用を試みる

考えられる原因

Winsock ベース プロバイダーの SOCKET は、閉じられた後に使用されました。 これは一般に、階層化されたサービス プロバイダー (LSP - アプリケーションと Winsock の間の DLL) の障害を示します。 閉じた SOCKET を使用しようとしたルーチンを識別するには、デバッガーで 'k' コマンドを使用して、現在のスタック トレースをダンプします。 SOCKET を閉じたルーチンのスタック・トレースをダンプするには、停止の 2 番目のパラメーターと共に dps コマンドを使用します。

アプリケーション検証ツールによって表示される情報

追加情報

不明な SOCKET の使用を試みる

考えられる原因

不明な SOCKET ハンドル値が Winsock 階層型サービス プロバイダー (LSP) によって使用されました。 これは通常、アプリケーションと Winsock の間で階層化された特定の LSP に対する障害を指しています。 不明の SOCKET を使用しようとしたルーチンを識別するには、デバッガーで 'k' コマンドを使用して、現在のスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報

追加情報

リークした SOCKET ハンドルが検出されました

考えられる原因

Winsock 基本サービス プロバイダーから開いている SOCKET がリークされたことが検出されました。 これは通常、アプリケーションと Winsock の間で階層化された特定の LSP に対する障害を指しています。 この停止をトラブルシューティングするには、この検証ツール停止の 2 番目のパラメーターでデバッガーで dps コマンドを使用して、SOCKET ハンドルを開いたスレッドのスタック トレースをダンプします。

アプリケーション検証ツールによって表示される情報

追加情報

成功した WSAStartup() の前、または分散が成功した WSACleanup() 呼び出しの後に Winsock API が呼び出されました

考えられる原因

WSAStarup() が成功する前、または WSACleanup() 呼び出しの分散が成功した後に、ネットワーク API に対して呼び出しが行われました。 WSAStartup は、Winsock API の使用の初期化を保証するために、Winsock を使用して任意のコンポーネントによって参照カウントを提供する必要があります。 コンポーネントによる WSAStartup/WSACleanup 呼び出しパターンが不均衡な場合、Winsock レイヤーがライブラリをアンロードし、リソースを解放する可能性があるため、未定義の動作が発生する可能性があります。

アプリケーション検証ツールによって表示される情報

追加情報

WSPStartup() が成功する前、または正常な WSPCleanup() 呼び出しの分散後に呼び出されるネットワーク API

考えられる原因

WSPStarup() が成功する前、または WSPCleanup() 呼び出しが成功した後に、Winsock サービス プロバイダー API に対して呼び出しが行われました。 これは通常、アプリケーションと Winsock の間で階層化された特定の Winsock 階層型サービス プロバイダー (LSP) に対する障害を指しています。 WSPStartup は、Winsock サービス プロバイダー API の使用の初期化を保証するために、Winsock を使用して LSP によって参照カウントを提供する必要があります。 LSP による WSPStartup/WSPCleanup 呼び出しパターンが不均衡な場合、Winsock レイヤーがライブラリをアンロードし、リソースを解放する可能性があるため、未定義の動作が発生する可能性があります。

アプリケーション検証ツールによって表示される情報

追加情報

成功した NSPStartup() の前、または分散が成功した NSPCleanup() 呼び出しの後に、Winsock ネーム サービス プロバイダー API が呼び出されました

考えられる原因

NSPStarup() が成功する前、または分散が成功した NSPCleanup() 呼び出しの後に、Winsock ネーム サービス プロバイダー API への呼び出しが行われました。 これは通常、アプリケーションと Winsock の間で階層化された特定の Winsock ネーム サービス プロバイダー (NSP) に対する障害を指しています。 WSPStartup は、Winsock ネーム サービス プロバイダー API の使用の初期化を保証するために、Winsock を使用して NSP によって参照カウントを提供する必要があります。 NSP による NSPStartup/NSPCleanup 呼び出しパターンが不均衡な場合、Winsock レイヤーがライブラリをアンロードし、リソースを解放する可能性があるため、未定義の動作が発生する可能性があります。

アプリケーション検証ツールによって表示される情報

追加情報

無効な Winsock 拡張関数ポインターの使用が検出されました

考えられる原因

Microsoft Winsock 拡張機能関数は、実行時に Winsock に関数ポインター値を照会することによってのみ呼び出し可能です。 Winsock ランタイムは、この関数ポインターが返されてからアンロードされています。 呼び出し元は、WSACleanup を呼び出して再利用しようとした後、関数ポインターのコピーを保持している可能性があります。

アプリケーション検証ツールによって表示される情報

追加情報

WSACleanup は、これらの SOCKET を所有するコードの下で、既存の SOCKET ハンドルを中止して閉じました

考えられる原因

WSACleanup は、このプロセスで開かれた SOCKET ハンドルが存在する間、Winsock 参照カウントを 0 にデクリメントすることを呼び出されました。 Winsock は、参照カウントが 0 に達すると、開いている SOCKET ハンドルをすべて閉じます。 これは通常、WSACleanup を使用して Winsock 参照数をデクリメントする (WSAStartup と不均衡) か、SOCKET ハンドルが呼び出し元によって正しく追跡されなくなった (リーク) バグです。 デバッガーで「k」と入力して、現在 WSACleanup を呼び出しているユーザーが Winsock 参照カウントを 0 に設定しているかどうかを示します。

アプリケーション検証ツールによって表示される情報

追加情報

WSPCleanup は、これらの SOCKET を所有するコードの下で、既存のサービス プロバイダー SOCKET ハンドルを中止して閉じました

考えられる原因

WSPCleanup は、このプロセスで開かれた SOCKET ハンドルが存在する間に、Winsock 参照カウントを 0 に減らした階層化サービス プロバイダー (LSP) によって呼び出されました。 Winsock は、参照カウントが 0 に達すると、開いている SOCKET ハンドルをすべて閉じます。 これは通常、WSPCleanup を介して Winsock 参照カウントを頻繁にデクリメントする LSP のバグ (WSPStartup とのバランスが崩れている)、または呼び出し元によって SOCKET ハンドルが正しく追跡されなくなっている (リーク) ことが原因です。 デバッガーで「k」と入力して、現在 WSPCleanup を呼び出しているユーザーが Winsock 参照カウントを 0 に設定しているかどうかを示します。

アプリケーション検証ツールによって表示される情報

追加情報

現在の Winsock 呼び出しでは、即時の戻り値である GetLastError が無効です。 これは通常、サービス プロバイダーの障害を指しています

考えられる原因

返される値、または GetLastError の現在の値が、指定された Winsock 2 仕様に従っていません。 これは通常、階層化されたサービス プロバイダー (LSP) のバグを指しています。これは、アプリケーションと Winsock の間で階層化された DLL です。 このような場合、LSP によって Winsock API コントラクトが破損し、呼び出し元に偽の値が返されます。 デバッガーのパラメーター 3 で ln を使用して、正しくないリターン コードを返した DLL 内の関数を見つけます。 パラメーター 1 と 2 を表示して、Winsock 呼び出しに関して正しくない値が何であったかを確認します。 Winsock send 関数または recv 関数を呼び出して、送信または受信が要求された実際のバイト数を確認する場合は、パラメーター 4 を表示します。 返されたバイト数が、送信または受信を要求されたバイト数を超える場合は無効です。

アプリケーション検証ツールによって表示される情報

追加情報

戻り値 (lpError) は、現在の Winsock 呼び出しでは無効です。 これは通常、基本サービス プロバイダーまたはネットワーク スタック内の障害を指します

考えられる原因

返される値、または IpError の現在の値が、指定された Winsock 2 仕様に従っていません。 これは通常、読み込まれたベース サービス プロバイダー (通常はmswsock.dll) またはネットワーク スタックのバグを示しています。 デバッガーのパラメーター 3 で ln を使用して、正しくないリターン コードを返した DLL 内の関数を見つけます。 パラメーター 1 と 2 を表示して、Winsock 呼び出しに関して正しくない値が何であったかを確認します。 Winsock send 関数または recv 関数を呼び出して、送信または受信が要求された実際のバイト数を確認する場合は、パラメーター 4 を表示します。 返されたバイト数が、送信または受信を要求されたバイト数を超える場合は無効です。

アプリケーション検証ツールによって表示される情報

追加情報

参照

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

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

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

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

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

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

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