RPC を使用して UNIX サーバーと通信するプログラムが動作を停止する

Windows XP のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Windows XP のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
Microsoft Windows XP 上で実行されていて、リモート プロシージャ コール (RPC) を使用するクライアント プログラムが、UNIX サーバー上で実行されている RPC サーバーと通信している場合、そのプログラムでランダムにアクセス違反が発生することがあります。
原因
この問題は、RPC ランタイム DLL (Rpcrt4.dll) 内の不適当なバッファが原因で発生します。クライアントが 40 ~ 60 秒間アイドル状態になった後で UNIX サーバーに発信 RPC 呼び出しを行い、その RPC 呼び出しに対する応答のサイズが大きくなる場合にのみ、バッファ オーバーランが発生します。オーバーランしたバッファにより、RPC で使用されたバッファに続くメモリ ブロックが破損し、それが原因で、クライアント プログラムでランダムにアクセス違反が発生することがあります。
解決方法

Service Pack の情報

この問題を解決するには、Microsoft Windows XP の最新の Service Pack を入手します。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
322389 最新の Windows XP Service Pack を入手する方法

修正プログラムの情報

マイクロソフトでは、現在この問題を修正する修正プログラムを提供中ですが、修正プログラムはこの資料に記載された問題のみを修正することを目的としており、障害があったコンピュータに対してのみ適用することを推奨します。この修正プログラムは、今後さらにテストを行う場合があります。この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次の Service Pack がリリースされるまで待つことを推奨します。

この問題を解決するには、Microsoft Online Customer Services にオンライン リクエストを送信し、修正プログラムを入手します。オンライン リクエストを送信して修正プログラムを入手するには、次のマイクロソフト Web ページを参照してください。 : 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。別のサービス リクエストを作成するには、次のマイクロソフト Web ページを参照してください。
   日付           時刻    バージョン          サイズ     ファイル名    ------------------------------------------------------------------   2002/12/23  10:32  5.1.2600.1154    505,856  rpcrt4.dll 

状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。 この問題は、Microsoft Windows XP Service Pack 2 で最初に修正されました。
詳細
一部の RPC サーバーは、クライアント プログラムがそのアイドル状態の接続を終了して、リソース使用量を減らすことを要求する場合があります。これは、シャットダウン PDU (Protocol Data Unit) をクライアントに送信することにより行われます。クライアントにおいて、RPC は RPC サーバーに発信呼び出しを発行している場合にのみ受信バッファをチェックします。一部の UNIX サーバーは、アイドル時間が 20 秒を経過するたびにシャットダウン PDU を送信します。クライアントのアイドル状態が、サーバーが 2 つのシャットダウン PDU を連続して送信する時間より長く続いた場合、クライアント上の RPC は、それら PDU を受信バッファ内で結合します。この時点で、クライアントが発信呼び出しを発行することを決定した場合、クライアントは、最初に受信バッファ内の結合された 2 つの PDU を処理しようとします。処理中、その結合により受信バッファが再割り当てされます。しかし、バッファ サイズ情報が正しく追跡されません。その結果、報告されるバッファは実際よりも大きくなる可能性があります。その後、発信呼び出しが発行されます。その応答が、再割り当てされた受信バッファの (報告されたものではなく) 実際のサイズよりも大きい場合、アクセス違反が発生します。

クライアントのアイドル状態が、サーバーが 3 つのシャットダウン PDU を送信する時間より長く続いた場合、RPC は接続を閉じます。その後、新しい接続が作成されて、発信呼び出しが実行されます。この場合、問題は発生しません。そのため、クライアント プログラムのアイドル状態が 40 秒より長く、60 秒より短い場合に、問題が発生する可能性が高くなります。ただし、これは、シャットダウン PDU の送信前に UNIX サーバーが待機する時間の長さに依存します。
プロパティ

文書番号:811576 - 最終更新日: 01/12/2015 21:13:53 - リビジョン: 3.0

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • kbnosurvey kbarchive kberrmsg kbbug kbfix kbqfe kbenv kbwinxpsp2fix kbwinxppresp2fix kbhotfixserver KB811576
フィードバック