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

文書翻訳 文書翻訳
文書番号: 811576 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

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 ページを参照してください。
http://go.microsoft.com/?linkid=6294451
: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。別のサービス リクエストを作成するには、次のマイクロソフト Web ページを参照してください。
http://support.microsoft.com/contactus/?ws=support
   日付           時刻    バージョン          サイズ     ファイル名 
   ------------------------------------------------------------------
   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 - 最終更新日: 2007年9月14日 - リビジョン: 3.0
この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
キーワード:?
kberrmsg kbbug kbfix kbqfe kbenv kbwinxpsp2fix kbwinxppresp2fix kbhotfixserver KB811576
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com