CORRECTIF : Répété de chargement et déchargement de fuite de mémoire virtuelle Mtxdm.dll Causes 1 Mo

Traductions disponibles Traductions disponibles
Numéro d'article: 232351
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lors du chargement et déchargement Mtxdm.dll au sein d'une boucle, une fuite de 1 Mo de mémoire virtuelle est visible avec chaque itération de la boucle.

Cela est plus susceptible de se produire dans les applications qui utilisent un pool de connexions ODBC et effectuent des connexions répétées et déconnexions à partir de la base de données back-end ou des applications ODBC qui rendent de nombreuses connexions et déconnexions à un back-end Oracle.

Cause

La fuite de mémoire virtuelle est causée par un appel à TerminateThread() dans Mtxdm.dll.

Lorsque le regroupement de connexions est utilisé dans une application ODBC, le Gestionnaire du distributeur (Mtxdm.dll) est chargé de gérer le regroupement de connexion, qui est géré par un thread de travail est démarré dans Mtxdm.dll.

Lorsque l'application se termine, le thread de travail a été interrompue par un appel à TerminateThread(), qui ne seront pas nettoyer et libérer le 1 Mo de mémoire allouée à la pile du thread de travail.

Cet même problème se produit lors de la création répétées de connexions et déconnexions à un serveur de base de données Oracle, car le pilote Microsoft Oracle ODBC charge Mtxdm.dll si le regroupement de connexions est utilisé ou non.

Résolution

Pour résoudre ce problème, procurez-vous le dernier service pack pour Windows NT 4.0 ou la mise à jour logicielle individuelle. Pour plus d'informations sur l'obtention du dernier service pack, rendezvous sur :
  • 152734Comment faire pour obtenir le dernier service pack windows nt 4.0
Pour plus d'informations sur l'obtention de la mise à jour logicielle individuelle, contactez les Services de Support technique Microsoft. Pour une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, accédez à l'adresse suivante sur le World Wide Web :
http://support.Microsoft.com/default.aspx?scid=fh ;EN-US ;CNTACTMS

Windows NT Server ou Workstation 4.0

Pour résoudre ce problème, procurez-vous le dernier service pack pour Windows NT 4.0 ou la mise à jour logicielle individuelle. Pour plus d'informations sur l'obtention du dernier service pack, rendezvous sur :
Pour plus d'informations sur l'obtention de la mise à jour logicielle individuelle, contactez les Services de Support technique Microsoft. Pour une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, accédez à l'adresse suivante sur le World Wide Web :
http://support.Microsoft.com/default.aspx?scid=fh ;EN-US ;CNTACTMS

Windows NT Server 4.0, Édition Terminal Server

Pour résoudre ce problème, procurez-vous le dernier service pack pour Windows NT Server 4.0, Édition Terminal Server. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
152734 Comment faire pour obtenir le dernier Service Pack Windows NT 4.0

Statut

Microsoft a confirmé qu'il s'agit d'un problème dans les produits Microsoft répertoriés au début de cet article. Ce problème a été corrigé dans Windows NT Server version 4.0, Édition Terminal Server Service Pack 6.

PLUS D'INFORMATIONS

Manuel d'Installation du correctif 051099a

Remarque : Pour obtenir ce correctif, vous devez contacter Microsoft Product Support Services. Veuillez consulter la section Résolution de cet article pour plus d'informations.
  1. Fermer ou arrêter les applications ou services qui sont à l'aide de Mtxdm.dll. Il peut s'agir de Internet Information Server (IIS), Microsoft Transaction Server (MTS), Microsoft Distributed Transaction Coordinator (DTC) et toutes les applications ADO ou ODBC.
  2. Téléchargez le correctif (051099a.exe) dans un répertoire temporaire et exécutez-le pour extraire les fichiers suivants :
    • Mmtxdm.dll
    • Readme.txt
  3. Recherchez et renommez la version actuelle de Mtxdm.dll, qui doit se trouver dans le dossier \Winnt\System32 pour les ordinateurs Windows NT et dans le dossier \Windows\System pour les ordinateurs Windows 9 x.
  4. Copiez la version corrigée du Mtxdm.dll dans le même emplacement et redémarrer vos services et applications.

Procédure pour reproduire le comportement

Créer une application de console C/C++ en utilisant le code suivant. Exécutez cette application lors de l'utilisation de l'Analyseur de performances pour afficher les octets virtuels de l'application.

Remarque: cet exemple de code utilise une source de données ODBC qui se connecte à un serveur Oracle principal, car le pilote Microsoft Oracle ODBC charge Mtxdm.dll et plus facilement illustre le problème.
   #include        <windows.h>
   #include        <stdio.h>
   #include        <sql.h>
   #include        <sqlext.h>
   #include        <assert.h>

   #define CK_RT(x) if( x != SQL_SUCCESS && x != SQL_SUCCESS_WITH_INFO)    assert(0)

   void main(){
       HENV        henv;
       HDBC        hdbc;
       RETCODE     rc = SQL_SUCCESS;
       char        *dsnStr="DSN=OracleServer;UID=scott;pwd=tiger;";
       short       rtnLen = 0;
       UCHAR       rtnDSN[999] = "";
       int         i,x;


       for (i=0; i < 100; i++)
   	{
               rc = SQLAllocEnv(&henv);
               CK_RT(rc);
               rc = SQLAllocConnect(henv, &hdbc);
               CK_RT(rc);
               rc = SQLDriverConnect(hdbc,
                         NULL,
                         (unsigned char *)dsnStr,
                         strlen(dsnStr),
                         rtnDSN,
                         255,
                         &rtnLen,
                         SQL_DRIVER_NOPROMPT);

               CK_RT(rc);
               SQLDisconnect(hdbc);
               SQLFreeConnect(hdbc);
               SQLFreeEnv(henv);
	   }
   }
				

Propriétés

Numéro d'article: 232351 - Dernière mise à jour: jeudi 7 juin 2012 - Version: 1.0
Mots-clés : 
kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 232351
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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