CORREÇÃO: Repetidas carregar e descarregar de vazamento de memória Virtual Mtxdm. dll faz com que 1 MB

Traduções de Artigos Traduções de Artigos
Artigo: 232351
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Ao carregar e descarregar Mtxdm. dll em um loop, um vazamento de 1 MB de memória virtual é visto com cada iteração do loop.

Isso é mais provável de ocorrer em aplicativos que usam um pool de conexão ODBC e estão fazendo repetidas conexões e desconexões de banco de dados back-end ou aplicativos ODBC que muitas conexões e desconexões para um back-end do Oracle.

Causa

O vazamento de memória virtual está sendo causado por uma chamada para TerminateThread() no Mtxdm. dll.

Quando o pool de conexões é usado em um aplicativo ODBC, o Gerenciador de repositório (Mtxdm. dll) é carregado para gerenciar o pool de conexão é tratado por um thread de trabalho iniciado em Mtxdm. dll.

Quando o aplicativo termina, o thread de trabalho é eliminado por uma chamada para TerminateThread(), que não limpo e livre de 1 MB de memória alocada para a pilha do thread de trabalho.

Esse mesmo comportamento pode ser visto ao fazer repetidas conexões e desconexões para um servidor de banco de dados Oracle, porque o driver ODBC do Microsoft Oracle carrega Mtxdm. dll se o pool de conexões está sendo usado ou não.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o Windows NT 4.0 ou a atualização de software individual. Para obter informações sobre como obter o service pack mais recente, vá para:
Para obter informações sobre como obter a atualização de software individual, contate o Atendimento Microsoft. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e informações sobre os custos de suporte, vá para o seguinte endereço na World Wide Web:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server ou Workstation 4.0

Para resolver esse problema, obtenha o service pack mais recente para o Windows NT 4.0 ou a atualização de software individual. Para obter informações sobre como obter o service pack mais recente, vá para:
  • Windows Service Pack Center- ou -

  • 152734como obter o service pack mais recente do windows nt 4.0
Para obter informações sobre como obter a atualização de software individual, contate o Atendimento Microsoft. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e informações sobre os custos de suporte, vá para o seguinte endereço na World Wide Web:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server 4.0, Terminal Server Edition

Para resolver esse problema, obtenha o service pack mais recente para o Windows NT Server 4.0, Terminal Server Edition. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
152734 Como obter o Service Pack mais recente do Windows NT 4.0

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Windows NT Server versão 4.0, Terminal Server Edition Service Pack 6.

MAIS INFORMAÇÕES

Instalação manual do Hotfix 051099a

Observação: Para obter esse hotfix, você deve contatar o Atendimento Microsoft. Consulte a seção resolução deste artigo para obter mais informações.
  1. Fechar ou interromper os aplicativos ou serviços que estão usando Mtxdm. dll. Isso pode incluir Internet Information Server (IIS), Microsoft Transaction Server (MTS), Microsoft Distributed Transaction Coordinator (DTC) e os aplicativos ADO ou ODBC.
  2. Baixe o hotfix (051099a.exe) em um diretório temporário e execute-o para extrair os seguintes arquivos:
    • Mmtxdm.dll
    • Readme. txt
  3. Localize e renomeie a versão atual do Mtxdm. dll, que deve estar na pasta \Winnt\System32 para computadores de Windows NT e na pasta \Windows\System para computadores Windows 9x.
  4. Copiar a versão de hotfix do Mtxdm. dll no mesmo local e reinicie os serviços e aplicativos.

Etapas para reproduzir o comportamento

Crie um aplicativo de console do C/C++ usando o seguinte código. Execute este aplicativo enquanto estiver usando o Monitor de desempenho para exibir os Bytes virtuais para o aplicativo.

Observação: Este exemplo de código usa uma fonte de dados ODBC que se conecta a um back-end do Oracle, porque o driver ODBC do Microsoft Oracle carrega Mtxdm. dll e mais facilmente demonstra o 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);
	   }
   }
				

Propriedades

Artigo: 232351 - Última revisão: 13 de junho de 2012 - Revisão: 3.0
Palavras-chave: 
kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 232351

Submeter comentários

 

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