FIX: Loosely Coupled Events Do Not Handle Failed Subscribers Correctly

This article was previously published under Q268856
This article has been archived. It is offered "as is" and will no longer be updated.
If many transient subscriptions are present, and if some of the clients fail (crash) without unsubscribing, Orphaned Remote Transient subscription may corrupt the Event system. After a client fails (dies), it takes much longer to subscribe, unsubscribe, and fire an event. This time continually increases when more clients crash until the Event system is stopped and restarted. The following event is logged in the Event log:
Event Type: Error
Event Source: EventSystem
Event Category: Event Service
Event ID: 4097
The COM+ Event System detected a bad return code during its internal processing. HRESULT was 80070057 from line 55 of .\subscription.cpp. Please contact Microsoft Product Support Services to report this error.
When a transient subscription is created, COM+ stores an entry for the interface in the Global Interface Table (GIT). If that subscription is updated with a different interface, COM+ does not remove the old entry before it stores the new entry. This leads to memory leaks and, eventually, crashes.
To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in theMicrosoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 2.
die dead

Article ID: 268856 - Last Review: 02/28/2014 00:33:23 - Revision: 2.2

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft COM+ 1.0
  • kbnosurvey kbarchive kbbug kberrmsg kbfix kbwin2000presp2fix KB268856