Artigo: 139071 - Última revisão: quarta-feira, 26 de Julho de 2006 - Revisão: 5.4

CORRECÇÃO: BSTR de automatização OLE cache fará com que memória origens fuga no Windows 2000

Está disponível transferência de hotfixDisponível transferência de hotfix
Ver e solicitar transferências de hotfix
Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

Este artigo descreve o seguinte sobre esta versão de correcção:
  • Problemas corrigidos pelo pacote de correcção.
  • Os pré-requisitos necessários para instalar o pacote de correcção.
  • Se tem de reiniciar o computador depois de instalar o pacote de correcção.
  • Se o pacote de correcções é substituído por qualquer outro pacote de correcção.
  • Se terá de fazer alterações ao registo.
  • Ficheiros contidos no pacote de correcção.

Sintomas

Automatização (anteriormente denominada Automatização OLE e Automatização ActiveX) coloca em cache o espaço alocado para cadeias BSTR. Isto pode causar a IMallocSpy fugas de memória de atributos para o utilizador BSTR errado numa aplicação que utiliza a BSTR cadeias do automatização. A origem correcta a fuga encontrará desactivando cache da automatização definindo a variável de ambiente OANOCACHE = 1 antes de executar a aplicação. Em muitas aplicações baseadas no servidor, a cache BSTR não é necessária. Existe uma correcção disponível para desactivar BSTR cache em computadores com o Windows 2000. Windows XP e Windows Server 2003 não requerem a correcção para desactivar a colocação em cache BSTR.

Resolução

Está disponível a partir da Microsoft uma correcção suportada. No entanto, esta correcção destina-se a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico.

Se a correcção está disponível para transferência, existe uma secção "denominada transferência de correcção disponível" na parte superior deste artigo da base de dados de conhecimento. Se esta secção não for apresentada, submeta um pedido para o serviço de cliente do Microsoft e suporte para obter a correcção.

Nota Se ocorram problemas adicionais ou se for necessária qualquer resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem esta correcção específica. Para obter uma lista completa dos números de telefone do suporte de cliente do Microsoft ou para criar um pedido serviço separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Nota O formulário "Transferência de correcção disponível" apresenta os idiomas para a qual a correcção está disponível. Se não vir o idioma, é porque uma correcção não está disponível para esse idioma.

Pré-requisitos

Tem de ter instalado Windows 2000 Service Pack 4 (SP4) para aplicar esta correcção.

Informações sobre reinício

Tem de reiniciar o computador depois de aplicar esta correcção.

Informações de registo

Não é necessário alterar o registo.

Informações sobre ficheiros da correcção

Esta correcção contém apenas os ficheiros necessários para corrigir os problemas referidos neste artigo. Esta correcção não pode conter de todos os ficheiros que necessita para actualizar completamente um produto para a compilação mais recente.A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Asycfilt.dll2.40.4528.0143,63211-Sep-200513: 05x 86
Oleaut32.dll2.40.4528.0631,05611-Sep-200513: 05x 86
Olepro32.dll5.0.4528.0164,11211-Sep-200513: 05x 86
Stdole2.tlb2.40.4528.016,89623-Ago-200502: 13

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Automatização coloca em cache o espaço alocado para BSTRs. Isto acelera a sequência de SysAllocString/SysFreeString. No entanto, isto pode provocar IMallocSpy para fugas de atributo para o utilizador de memória incorrecto porque não se encontra atento a colocação em cache que efectua a automatização. Por exemplo, se a aplicação atribui um BSTR e liberta-lo, o bloco de memória libertado é colocado na cache do BSTR por automatização. Se a aplicação, em seguida, atribui outro BSTR, poderá receber o bloco livre da cache. Se a atribuição BSTR segunda não é libertada, o IMallocSpy atributo a fuga para a atribuição primeira do BSTR. A origem de fuga correcta (a atribuição de segunda) pode ser determinada desactivando a cache do BSTR que efectua a automatização. Pode fazê-lo pela variável de ambiente definição OANOCACHE = 1 antes de executar a aplicação. No Windows 2000, é necessária a versão de correcção do ficheiro oleaut32.dll referidos neste artigo. Também é importante procurar fugas à hora correcta para impedir a fuga falsos relatórios. Estes fugas podem ocorrer quando a implementação IMallocSpy verifica fugas demasiado cedo. Os utilizadores de memória atribuída pelo IMalloc legitimamente podem conter ao mesmo após OleUninitialize. Por exemplo, a cache de automatização BSTR é eliminada do ficheiro Oleaut32.dll DLL_PROCESS_DETACH momento. Isto significa que verificar fugas imediatamente após OleUninitialize pode provocar falsos relatórios de fugas de memória. Um bom local para procurar fugas de memória consta o processo de destruição de uma instância de uma classe, que implementa a IMallocSpy estático. O processo de destruição desta instância estática é chamado depois de DllMain de cada DLL ligado pela aplicação é chamado com DLL_PROCESS_DETACH.

Definir a variável de ambiente OANOCACHE

  1. No painel de controlo, clique duas vezes no ícone sistema . A caixa de diálogo Propriedades do sistema é apresentada.
  2. No separador Avançadas , clique em Variáveis de ambiente . A caixa de diálogo Variáveis de ambiente é apresentada.
  3. Em variáveis do sistema , clique em Novo . A caixa de diálogo Nova variável de sistema é apresentada.
  4. Tipo OANOCACHE na caixa Nome da variável .
  5. Escreva 1 na caixa Valor da variável .
  6. Clique três vezes em OK .
Antes de alterar a variável de ambiente OANOCACHE, tem de parar os seguintes processos do servidor se estiverem em execução:
  • O processo Inetinfo
  • O processo de Dllhost
  • O processo de W3wp
  • O processo de Aspnet_wp
Nota Se não tiver a certeza se estiverem a executar estes processos do servidor, definir a variável de ambiente OANOCACHE = 1 e, em seguida, reinicie o computador.

Referências

Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684  (http://support.microsoft.com/kb/824684/ ) Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
Palavras-chave: 
kbmt kbautohotfix kbhotfixserver kbqfe kbexpertiseadvanced kbfix kbpubtypekc kbautomation KB139071 KbMtpt
Tradução automáticaTraduçã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: 139071  (http://support.microsoft.com/kb/139071/en-us/ )