INFO: Memory Leak in Msdtc.exe when Using XA Resource Manager

ID: Q197217

The information in this article applies to:

SUMMARY

When using the Microsoft Distributed Transaction Coordinator (DTC) as the transaction manager for some XA compliant resource managers, such as Oracle, there can be a slow memory leak in the Msdtc.exe process. The leak occurs whenever the XA Transaction Manager (XATM) component of DTC opens and closes a connection to the resource manager. This does not happen very frequently so the memory leak is typically quite small.

MORE INFORMATION

Who Should Install This Release?

You should install hotfix 0809 if you are using experiencing the DTC memory leak described in the SUMMARY section.

This release should only be installed on systems running Windows NT 4.0 (Service Pack 4 is recommended). It should not be installed on systems running Windows NT 3.51.

Note that this release is based upon the version of Microsoft DTC included with the Windows NT 4.0 Service Pack 4 Release. By installing this release, you are upgrading Microsoft DTC to the Windows NT 4.0 Service Pack 4 Release level, in addition to correcting the problems described here.

Installing the Release on a Non-Clustered System

1. Create an empty temporary directory on your system.

2. Run the self-extracting executable file (i0809.exe [for the i386] or

   a0809.exe [for alpha]) and enter the name of the temporary directory
   when prompted. The program unzips the following files into the temporary
   directory:

      Files
      -----

      Dtcsetup.exe
      Qfe0809.txt

3. Make sure that you stop the Microsoft DTC service. Also, make sure that
   any service that depends upon Microsoft DTC is stopped including
   Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message
   Queue, and Microsoft COMTI.

4. Make sure that the Windows NT Control Panel is closed.

5. Execute Dtcsetup.exe.

6. Reboot the system.

7. Restart any services that depend upon Microsoft DTC.

Installing Release on a cluster with an Existing Clustered Microsoft DTC

1. Create an empty temporary directory on both nodes of the cluster.

2. On both nodes of the cluster, run the self-extracting executable file

   (i0809.exe [for the i386] or a0809.exe [for the alpha]) and enter the
   name of the temporary directory when prompted. The program unzips the
   following files into the temporary directory:

      Files
      -----

      Dtcsetup.exe
      Qfe0809.txt

3. Make sure that the Microsoft DTC cluster resource is stopped using the
   MSCS Cluster Administrator. Also, make sure that any services that
   depend upon Microsoft DTC are also stopped including Microsoft
   Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and
   Microsoft COMTI.

4. Make sure that the Windows NT Control Panel is closed on all systems in
   the cluster.

5. Execute the Dtcsetup.exe on the node that controls the Microsoft DTC
   cluster resource. When prompted to install Microsoft DTC on the other
   nodes in the cluster, run Dtcsetup.exe on those nodes. After doing this,
   reboot all systems.

6. Restart any services that depend upon Microsoft DTC.

Installing the Release on a Cluster with a Non-Clustered Microsoft DTC

1. Create an empty temporary directory on both nodes of the cluster.

2. On both nodes of the cluster, run the self-extracting executable file

   (i0809.exe [for the i386] or a0809.exe [for the alpha]) and enter the
   name of the temporary directory when prompted. The program unzips the
   following files into the temporary directory:

      Files
      -----

      Dtcsetup.exe
      Qfe0809.txt

3. Make sure that the Microsoft DTC service is stopped on every system in
   the cluster. Also, make sure that any service that depends upon
   Microsoft DTC are also stopped including Microsoft Transaction Server,
   Microsoft SQL Server, Microsoft Message Queue, and Microsoft COMTI.

4. Make sure that the Windows NT Control Panel is closed on all systems in
   the cluster.

5. When you install this release on a clustered system, the setup program
   automatically installs a clustered version of Microsoft DTC. The
   clustered version of Microsoft DTC requires a MSCS Resource Group that
   contains both a Network Name Resource and a Shared Disk Resource. Before
   installing this release, make sure that at least one such MSCS Resource
   Group exists. Dtcsetup.exe assigns Microsoft DTC to the first MSCS
   Resource Group that it finds that contains both a Network Name Resource
   and Shared Disk Resource. After ensuring that the necessary Resource
   Group exists, execute Dtcsetup.exe on the node controlling that Resource
   Group.

6. When prompted to install Microsoft DTC on the other nodes in the
   cluster, run Dtcsetup.exe on those nodes. After doing this, reboot all
   systems.

7. Restart any services that depend upon Microsoft DTC.

The XATM creates objects called "tasks" that do work on behalf of the core state-machines. This work happens asynchronously. Due to a bug - the XATM was never destroying the task objects. Task objects are created every time a new connection is opened to the XA RM by the resource dispenser or every time the XATM tries to recover an indoubt connection.

Version           : WINNT:2.0
Platform          : winnt
Issue type        : kbinfo

Last Reviewed: March 11, 1999