ID do artigo: 188831 - Última revisão: terça-feira, 23 de setembro de 2003 - Revisão: 1.1 WINNT-2K - Como Ativar o Recurso Especial de Pool Para Isolar um Pool Danificado
Este artigo foi publicado anteriormente em BR188831 Sumário
IMPORTANTE Esse documento contém informações sobre a edição do registro. Antes de você editá-lo, tenha certeza de que sabe como restaurá- lo se ocorrer algum problema. Para obter informações sobre como fazê-lo, veja o tópico de Ajuda "Restaurando o Registro" no Regedit.exe ou o tópico de Ajuda "Restaurando uma Chave do Registro" no Regedt32.exe. Pool danificado pode ser a causa principal de muitos da maioria dos problemas evasivos do Windows NT. Pool danificado é causado quando um componente do modo kernel grava fora da memória da área alocada do pool. Granado na memória além do limite da sua área alocada, é provável que outra área da memória alocada, possivelmente possuída por outro componente, é sobrescrita. Este dano pode causar problemas como tela azul em áreas completamente não relacionadas com o código. Um componente do modo kernel ler além da área alocada pode também causar problemas. Se são causados por drivers OEM (Original Equipment Manufacturers) ou problemas no Windows NT, problemas de pool danificado são algumas das maiores dificuldades de identificar. Normalmente, tudo aquilo que pode ser visto num erro de esvaziamento de memória são sintomas do problema real, como uma área de dados tornado-se danificada e causando problemas numa peça do código completamente não relacionada. Até agora isto era quase impossível identificar a peça de código que danifica a memória. O código do pool danificado pode agora ser identificado na instrução que está causando o pool danificado. Um novo utilitário de gerenciamento de memória chamado Special Pool é incluído no Windows NT 4.0 Service Pack 4 (SP4) e no Windows 2000. O utilitário Special Pool identifica o componente do modo kernel que está danificando os dados do pool ao gravar fora da sua área de memória alocada. I Mais Informações
ATENÇÃO: Usar o Editor de Registro incorretamente pode ocasionar sérios problemas que podem requerer a reinstalação do sistema operacional. A Microsoft não pode garantir que problemas resultantes do uso incorreto do Editor de Registro possam ser solucionados. O uso do Editor de Registro é de seu próprio risco. Para informações sobre como editar o registro, veja o tópico Alterando chaves e valores na Ajuda On-line do Editor de Registro (Regedit.exe). Observe que você deve fazer cópias dos arquivos do registro (System.dat e User.dat) antes de editar o registro. Se você estiver executando o Windows NT ou o Windows 2000, também deve atualizar seu Disco de Reparação de Emergência (ERD). O modo como o utilitário Special Pool funciona é alocando duas páginas de memória virtual para toca alocação do pool requisitada através de ExAllocatePoolWithTag que se assemelha aos seguintes critérios: · A requisição de alocação tem que ser para um tamanho menor que a alocação máxima que irá caber numa página de pool. · A requisição tem que ser parecida com a especificação PoolTag no registro. Para detecção de sobrecarga do pool, a primeira página é usada para conter a alocação no final da página. A segunda página é uma página de guarda. Para detecção de sub-carga do pool, a primeira página é a página de guarda. É seguida por uma página que contém a alocação no começo da página. A detecção de sobrecarga é provavelmente a mais usada. Para detecção de sobrecarga, a alocação requisitada é colocada no final da primeira página fazendo backup do tamanho da requisição do final da página. O tamanho da alocação é agrupado num limite de 8-bytes. Uma chave de padrão, o tamanho e as informações da marca do pool são gravados no cabeçalho nos primeiros oito bytes na primeira página. O padrão também é propagado através da página. Desde que a alocação é colocada no limite próximo de 8-bytes, pode haver tantos quantos sete bytes distribuídos seguindo a alocação. O padrão é também gravado nos bytes distribuídos seguintes a alocação. A Segunda página é a página de guarda. A página de guarda consiste de uma entrada de tabela de página especial (PTE) que é marcada com proteção sem acesso. Marcando esta segunda página com a proteção sem acesso, qualquer código que tente ler ou gravar além do final da primeira página provoca imediatamente uma violação de acesso resultando num erro Stop 0x0000000A ou Stop 0x0000001E. Isto ativa alguma depuração do sistema para identificar a instrução exata que causa o dano no pool. Como um backup verifica para pegar os violadores que gravam além do limite do final da alocação mas não alem do final da página, os bytes distribuídos no final da alocação são validados durante a requisição do pool livre (ExFreePoolWithTag). Os bytes distribuídos são comparados ao padrão no cabeçalho da alocação para verificar se qualquer coisa está sobregravada na área de bytes distribuídos. Se a verificação não funcionar, um erro Stop 0x00000001A ocorre. Esta verificação não identifica necessariamente a peça exata do código que causa o pool danificado, mas esta pode ajudar na identificação do componente que causa o dano. Para ativar o utilitário Special Pool, adicione as seguintes chaves e valores no registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management Nome do Valor: PoolTag Tipo de Dados: REG_DWORD Dados: Pool tag mask | Allocation size mask | 0 A máscara de marca do pool é o ID da marca do pool que contém os caracteres mascarados do pool em que você quer colocar o utilitário Special Pool. Esta máscara tem que ser especificada em hexadecimal em ordem inversa. Esta mascara também pode conter ??? para mascarar um único caractere ou ?*? para mascarar deste ponto até o final da marca. Por exemplo, para monitorar todos os pools com uma marca de pool começando com ?Nt?, especifique ?2A744E? (sem as aspas), que representa ?*tN?. A seguinte tabela lista mais exemplos: Pool para monitorar Representação de Caractere Máscara da Marca Todos os pools "*" 0x2A N??s "s??N" 0x733F3F4E A especificação da alocação do tamanho da mascara coloca todas as alocações do de um tamanho especifico no Special Pool. Este é também especificado em hexadecimal. Por exemplo, se todas as alocações de 32 bytes são colocadas no Special Pool, especifique 0x20. Quando zero (0x0) é especificado, o utilitário Special Pool não é inicializado. Além disso, o utilitário Special Pool não é inicializado se o valor do registro PoolTag não está definido no registro. Nome do Valor: PoolTagOverruns Tipo de Dados: REG_DWORD Dados: 1 | 0 ?1? indica que a sobrecarga de alocação do pool é detectada para a marca especificada. A alocação é colocada no final da página e a página de guarda segue. Exemplos de uso comum para criar essas duas chaves de registro devem ser: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management Nome do Valor: PoolTag Tipo de Dados: REG_DWORD Dados: 0x2A Nome do Valor: PoolTagOverruns Tipo de Dados: REG_DWORD Dados: 1 ?0? indica que a sub-carga da alocação do pool é detectada para a marca especificada. A alocação é colocada no começo da página e a página de guarda precede a página que contém a alocação. NOTA: Para o Windows NT Terminal Server 4.0, você precisa desativar KStackPool ao usar o Special Pool. Para fazer isso, adicione o seguinte valor de registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\S ession Manager\Memory Management EnableKStackPool Tipo de Dados: REG_DWORD 0 - KStack pool desativado 1 - KStack pool sempre ativado 2 - KStack pool ativado para >= computadores de 256 MB (padrão) Se você não faz esta alteração em computadores Terminal Server com >=256 MB, você pode receber mensagens de erro STOP 0x00000078 (PHASE0_EXCEPTION). NOTA: Depois que você fizer qualquer uma das alterações do descritas neste artigo, reinicie o computador para fazer com que as alterações tenham efeito. Se depois que você ativa o recurso Special Pool, o computador parar de responder (congela) com uma mensagem de erro numa tela azul durante a inicialização, reinicie o computador e inicie este usando a opção Última Configuração Boa Conhecida. Ativar o recurso Special Pool não é gravado na entrada da Última Configuração Boa Conhecida no registro até que seja feito um logon bem sucedido. | Outros Recursos Outros Sites de Suporte
ComunidadesTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Voltar para o início