STOP 0xEFFFFFFF Exception in OLE Servers with Multiple Clients

This article has been archived. It is offered "as is" and will no longer be updated.
When multiple clients are concurrently accessing an out of process COMserver, client calls may fail unexpectedly. Debugging the server duringsuch failures shows that the server is throwing exception 0xEFFFFFFF.

Recognizing this problem can be difficult because both the client and theserver applications may continue running. In particular, this exceptiondoes not directly result in causing of the server or the client to stopresponding (hang) or a crash.

Rather, the server simply returns a failure to the client. Whether theclient continues functioning correctly after such a failure will dependentirely on how the client software is written. Well behaved clientapplications may silently retry the operation or log an error without beingotherwise adversely affected. Clients that do not take care to check thereturn status of their function calls may experience access violations orother fatal errors.

To confirm whether this problem is the cause of a specific failure, it isnecessary to debug the server application, set the debugger to break onthis exception, and compare the resultant stack to the one below:
   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()				
The OLE functions handling typelib marshaling are not completelymultithread safe, resulting in a narrow window of opportunity for theexception to take place if two or more clients are making concurrent callsto the server.
To resolve this problem, obtain the latest service pack for Windows NT 4.0 or the individual software update. For information on obtaining the latest service pack, please go to:
For information on obtaining the individual software update, contact Microsoft Product Support Services. For a complete list of Microsoft Product Support Services phone numbers and information on support costs, please go to the following address on the World Wide Web:
Microsoft has confirmed this to be a problem in Windows NT version 4.0. This problem was first corrected in Windows NT 4.0 Service Pack 5.
4.00 object linking embedding com dcom distributed

Article ID: 195469 - Last Review: 01/09/2015 14:43:59 - Revision: 3.0

Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Server 4.0 Standard Edition

  • kbnosurvey kbarchive kbhotfixserver kbqfe kbbug kbfix KB195469