REVISIÓN: Cargar repetida y descargar de pérdida de memoria Virtual de 1 MB de Mtxdm.dll causas

Seleccione idioma Seleccione idioma
Id. de artículo: 232351
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se carga y descarga Mtxdm.dll dentro de un bucle, una pérdida de 1 MB de memoria virtual se ve con cada iteración del bucle.

Esto es más probable que ocurra en las aplicaciones que utilizan una agrupación de conexiones ODBC y están haciendo repetidas de las conexiones y desconexiones de la base de datos back-end o aplicaciones de ODBC que hacen muchas conexiones y desconexiones a un back-end de Oracle.

Causa

La pérdida de memoria virtual está causada por una llamada a TerminateThread() dentro de Mtxdm.dll.

Cuando se utiliza la agrupación de conexiones dentro de una aplicación ODBC, se carga el administrador del dispensador (Mtxdm.dll) para administrar la agrupación de conexiones, que es manejada por un subproceso de trabajo que se inició de Mtxdm.dll.

Cuando termina la aplicación, se eliminará el subproceso de trabajo mediante una llamada a TerminateThread(), lo que no limpia y libre de 1 MB de memoria asignada para la pila del subproceso de trabajo.

Este mismo comportamiento puede verse cuando se realizan repetidas de las conexiones y desconexiones a un servidor de base de datos Oracle, ya que el controlador Microsoft ODBC para Oracle carga Mtxdm.dll si agrupación de conexiones se está utilizando o no.

Solución

Para resolver este problema, obtenga el service pack más reciente para Windows NT 4.0 o la actualización de software individuales. Para obtener información acerca de cómo obtener el service pack más reciente, visite:
Para obtener información acerca de cómo obtener la actualización de software individuales, póngase en contacto con servicios de soporte técnico de Microsoft. Para obtener una lista completa de los números de teléfono de servicios de soporte técnico de Microsoft e información sobre los costos de soporte técnico, vaya a la siguiente dirección en el World Wide Web:
http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server o Workstation 4.0

Para resolver este problema, obtenga el service pack más reciente para Windows NT 4.0 o la actualización de software individuales. Para obtener información acerca de cómo obtener el service pack más reciente, visite:
  • Centro de Service Pack de Windows- o -

  • 152734Cómo obtener el service pack más reciente de windows nt 4.0
Para obtener información acerca de cómo obtener la actualización de software individuales, póngase en contacto con servicios de soporte técnico de Microsoft. Para obtener una lista completa de los números de teléfono de servicios de soporte técnico de Microsoft e información sobre los costos de soporte técnico, vaya a la siguiente dirección en el World Wide Web:
http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server 4.0, Terminal Server Edition

Para resolver este problema, obtenga el service pack más reciente para Windows NT Server 4.0, Terminal Server Edition. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en el Microsoft Knowledge Base:
152734 Cómo obtener el Service Pack más reciente de Windows NT 4.0

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo. Este problema se corrigió por primera vez en Windows NT Server versión 4.0, Terminal Server Edition Service Pack 6.

OBTENER MÁS INFORMACIÓN

Instalación manual de la revisión 051099a

Nota: Para obtener este hotfix, debe comunicarse con servicios de soporte técnico de Microsoft. Por favor, consulte la sección de resolución de este artículo para obtener más información.
  1. Cierre o detenga las aplicaciones o servicios que utilicen Mtxdm.dll. Esto puede incluir Internet Information Server (IIS), Microsoft Transaction Server (MTS), Coordinador de transacciones distribuidas (DTC) de Microsoft y las aplicaciones ADO u ODBC.
  2. Descargue la revisión (051099a.exe) en un directorio temporal y ejecútelo para extraer los archivos siguientes:
    • Mmtxdm.dll
    • Readme.txt
  3. Busque y cambie el nombre de la versión actual de Mtxdm.dll, que debe estar en la carpeta \Winnt\System32 para equipos con Windows NT y en la carpeta \Windows\System para equipos Windows 9 x.
  4. Copie la versión de la revisión de Mtxdm.dll en la misma ubicación y reiniciar los servicios y aplicaciones.

Pasos para reproducir el comportamiento

Crear una aplicación de consola de C/C ++ utilizando el código siguiente. Ejecutar esta aplicación mientras se utiliza el Monitor de rendimiento para ver Bytes virtuales de la aplicación.

Nota: en este ejemplo de código utiliza un origen de datos ODBC que se conecta a un back-end de Oracle, ya que el controlador Microsoft ODBC para Oracle carga Mtxdm.dll y más fácilmente demuestra el problema.
   #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);
	   }
   }
				

Propiedades

Id. de artículo: 232351 - Última revisión: miércoles, 13 de junio de 2012 - Versión: 3.0
Palabras clave: 
kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 232351

Enviar comentarios

 

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