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

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
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
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 aplicaciones de ODBC que hacen muchas conexiones y desconexiones de un back-end de Oracle o aplicaciones que utilizan una agrupación de conexiones ODBC y realizan repetidas conexiones y desconexiones de la base de datos back-end.
Causa
Lo provoca la pérdida de memoria virtual mediante una llamada a TerminateThread() en 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 limpiar y liberar el 1 MB de memoria asignada para la pila del subproceso de trabajo.

Este mismo comportamiento puede verse cuando se realizan repetidas conexiones y desconexiones a un servidor de base de datos de Oracle, ya que el controlador ODBC de Microsoft Oracle carga Mtxdm.dll si la 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 los servicios de soporte técnico de Microsoft. Para obtener una lista completa de números de teléfono de soporte técnico e información sobre los costos de soporte, vaya a la siguiente dirección en el World Wide Web:

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:
Para obtener información acerca de cómo obtener la actualización de software individuales, póngase en contacto con los servicios de soporte técnico de Microsoft. Para obtener una lista completa de números de teléfono de soporte técnico e información sobre los costos de soporte, vaya a la siguiente dirección en el World Wide Web:

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 elMicrosoft 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ó primero 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. 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 servicios de 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 Mtxdm.dll revisión en la misma ubicación y, a continuación, reinicie 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 al utilizar el Monitor de rendimiento para ver Bytes virtuales de la aplicación.

Nota: el código utiliza un origen de datos ODBC que se conecta a un servidor de Oracle, ya que el controlador ODBC de Microsoft Oracle carga Mtxdm.dll y más fácilmente muestra 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);	   }   }				
memoria virtual pérdida oracle mtxdm.dll odbc conexión agrupación exitprocess desconectar 2320 de 1 MB

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 232351 - Última revisión: 01/10/2015 11:59:48 - Revisión: 5.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtes
Comentarios