11 de julho de 2009

Erro "Operação iniciada pelo Registry falhou"

Recentemente, um Cliente que tem a solução de ERP da ABC71 com Nota Fiscal Eletrônica nos notificou a respeito de uma mensagem de erro que vinha ocorrendo com frequência no servidor deles, onde reside uma parte da solução. A mensagem de erro era retornada pelo Windows e não esclarecia muito: "an i/o operation initiated by the registry failed unrecoverably".

Em princípio, suspeitei que este erro tivesse relação com o problema descrito no tópico 312362 da base de conhecimento da Microsoft (o servidor não conseguiu alocar memória no arquivo de paginação) pois uma primeira triagem de causas apontou erro na alocação de memória. Infelizmente, o procedimento descrito na base não resolveu a questão.

Achei, então, algumas informações interessantes numa discussão no fórum Parallels que foram úteis. O último comentário nesta discussão explica que o erro "an i/o operation initiated by the registry failed unrecoverably" ocorre quando não há memória disponível para executar a operação e também não foi possível paginar a memória em uso, isto é, lançar no arquivo de paginação do Windows blocos de memória que não precisem estar disponíveis num momento. Como essa falta de memória poderia ser causada por algum programa que estivesse usando muitos "handles" do Windows, passamos a verificar o uso desse recurso em nossos programas. Praticamente toda operação no Windows usa Handles: além do próprio acesso ao Registry, outros exemplos são a manipulação de arquivos, acesso a Serviços, uso da impressora e até desenhar numa janela. A quantidade de handles alocados por programa pode ser visto no Task Manager, numa coluna que deve ser incluída na guia Processes. O nome da coluna é Handle Count. Fazer ordenação decrescente por essa coluna mostra se há algum programa tentando alocar muitos handles.

De posse dessas informações, percebemos que o problema não era em nossos programas. Voltamos ao fórum onde, na sequência da discussão, o autor do comentário diz que todas as vezes que se deparou com essa mensagem tratava-se de infecção por virus ou alguma tentativa de hack. Mas as instruções descritas lá poderiam reiniciar o servidor do Cliente e até danificar arquivos (veja o fórum se quiser mais informações sobre esses procedimentos) e isso nos levou a deixar de lado essa tentativa.

Pesquisando em outras fontes, finalmente encontrei informações que resolveram o problema. No caso, era um outro software que havia sido atualizado recentemente e um bug nessa atualização deixava o Windows instável. Listo abaixo uma série de itens que levantei para serem verificados caso essa mensagem de erro apareça:
Alguns softwares podem causar o erro. Se há suspeita sobre algum, desabilite-o e veja se o erro persiste. Pode ser qualquer programa, incluindo novos programas recém instalados ou atualização de softwares que já existiam.

Se o usuário logado possui quota para uso de disco, atingir o limite da quota pode gerar o erro. Atenção: é possível configurar Serviços do Windows para que use um usuário diferente daquele que está logado no sistema operacional. É a cota do usuário especificado no Serviço que está valendo para o Serviço em questão.

Matenha atualizado o Sistema Operacional e os demais softwares, aplicando patches de correção que estiverem disponíveis.

Problemas com o hardware também podem provocar esse erro: memória ou placa-mãe defeituosa, disco rígido corrompido (executar o comando chkdsk /r pode ajudar a detectar esta situação), cabo do disco mal colocado, etc..


Nenhum comentário :

Postar um comentário

OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.

Observação: somente um membro deste blog pode postar um comentário.