Repository Engine Is Not Released from Memory When DTC Is in Use (266182)



The information in this article applies to:

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional

This article was previously published under Q266182

SYMPTOMS

After all references have been released, the Repository engine may not be released from memory. Note that this only occurs when DTC transactions are used. After this occurs several times, your computer either runs out of memory or runs out of database connections. The error message you receive depends on how many objects you "touch" and how much memory is allocated for the repository cache.

CAUSE

The problem can occur if DTC still has a reference to the Repository engine. When this occurs, if the Repository engine is instantiated and released within the same process multiple times, multiple copies of the Repository engine remain in memory. Note that this problem is very common when you are using the Repository engine as part of an MTS solution. Because the instance is not released, the connection to the database is not released and the connection cannot be used again. DTC still has a reference to the Repository because:
  1. The Repository engine receives the connection point for IID_ITransactionOutcomeEvents, and calls Advise().
  2. If the Repository engine calls Unadvise(), it does not receive all of the committed or aborted events, and the execution is incorrect.
  3. If the Repository engine does not call Unadvise(), the Repository is not released.
NOTE: In step 2, the counter is decremented too rapidly, and this results in a loss of events. In step 3, the counter never returns to zero and the Repository is not released.

RESOLUTION

To resolve this problem, obtain and install Windows 2000 Service Pack 1 (SP1) from the following Microsoft Web site:

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

Modification Type:MajorLast Reviewed:11/20/2003
Keywords:kbbug kbenv kberrmsg kbpending KB266182