[NT]複数クライアントを持つ OLE サーバーで STOP 0xEFFFFFFF 例外

文書翻訳 文書翻訳
文書番号: 195469 - 対象製品
この記事は、以前は次の ID で公開されていました: JP195469
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

複数のクライアント アプリケーションから、COM サーバーへアクセスしているときに、サーバー上のリソースが不足した場合、クライアント呼び出しが失敗することがあります。この失敗により、実行中のクライアント アプリケーションにおいて、アクセス違反などの障害が発生することがあります。

補足

クライアントがその障害の後でも正常に機能し続けるかどうかは、クライアント ソフトウェアがどのように設計されているかに依存します。例外処理を考慮して設計されたクライアント アプリケーションでは、この障害に対しシステムへ悪影響を与えることはなく、エラーをログとして残すだけです。

これに対して、例外処理が考慮されていないクライアント アプリケーションでは、アクセス違反や処理中のデータに対する致命的なエラーが発生する可能性があります。

上記の様に、クライアント アプリケーションによっては、クライアント側とサーバー側のアプリケーションにおいて障害とわかる事象が発生しない場合があるため、クライアント呼び出しの失敗を発見することは困難です。ただし、この障害による影響で、サーバーやクライアントが応答を停止したり (ハングする) STOP エラーが発生することはなく、サーバーからクライアントに例外コードを返すだけです。

この問題が特定の障害の原因であるかどうかを確認するには、サーバー アプリケーションをデバッグする必要があります。ただし、デバッグの方法によっては例外 0xEFFFFFFF が発生することがあるため、デバッグの際には、サーバー アプリケーションに対するブレーク ポイントを設定し、現象発生時のスタックと以下の内容とを比較してください。
  RPCRT4! RpcRaiseException@4 + 49 bytes
  OLE32! ThreadInvoke(struct _RPC_MESSAGE *) + 524 bytes
  RPCRT4! DispatchToStubInC@12 + 52 bytes
  RPCRT4! RPC_INTERFACE::DispatchToStubWorker(struct _RPC_MESSAGE *,
               unsigned int,long *) + 292 bytes
  RPCRT4! RPC_INTERFACE::DispatchToStub(struct _RPC_MESSAGE *,
               unsigned int,long *) + 93 bytes
  RPCRT4! RPC_INTERFACE::DispatchToStubWithObject(struct _RPC_MESSAGE *,
               class RPC_UUID *,unsigned int,long *) + 176 bytes
  RPCRT4! WMSG_SASSOCIATION::DealWithRequestMessage(union _WMSG_MESSAGE *,
               union _WMSG_MESSAGE *,struct _RPC_MESSAGE *,
               class WMSG_SBINDING * *,unsigned int,int,int,int) + 826
               bytes
  RPCRT4! WMSG_ADDRESS::HandleRequest(union _WMSG_MESSAGE *,
               class WMSG_SASSOCIATION *,struct _RPC_MESSAGE *,
               class WMSG_ENDPOINT *,int,int) + 146 bytes
  RPCRT4! WMSG_ADDRESS::DealWithWMSGRequest(union _WMSG_MESSAGE *,
               class WMSG_ENDPOINT * *,struct HWND__ * *,
               class WMSG_ASSOCIATION *,union _WMSG_MESSAGE * *) + 734
               bytes
  RPCRT4! WMSG_ADDRESS::ReceiveLotsaCalls(void) + 837 bytes
  RPCRT4! RecvLotsaCallsWrapper(class WMSG_ADDRESS *) + 9 bytes
  RPCRT4! BaseCachedThreadRoutine(class CACHED_THREAD *) + 156 bytes
  RPCRT4! ThreadStartRoutine(class THREAD *) + 23 bytes
  KERNEL32! 77f04f44()

原因

typelib のマーシャリングを扱っている OLE 関数はマルチスレッドに対して完全に安全というわけではないので、2 つ以上のクライアントがサーバーに対して同時呼び出しを行った場合、この例外がごくまれに起きます。

状況

この問題は Windows NT 4.0 日本語版のサービスパック 5 で修正されております。
なお、サービスパック 5 にて修正された問題の一覧は、以下の関連文書に記載されております。
文書番号 : 413592
タイトル : [NT]Windows NT 4.0 Service Pack 5 修正一覧

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 195469 (最終更新日 1999-05-14) をもとに作成したものです。

プロパティ

文書番号: 195469 - 最終更新日: 2014年2月3日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
キーワード:?
kbnosurvey kbarchive kbbug kbfix kbbug4.00 kbfix4.00 KB195469
"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