Pergunta

Eu tenho um site que eu tenho vindo a trabalhar há cerca de um ano. Recentemente, ele começou a jogar System.AccessViolationException de vez em quando, na minha máquina dev, principalmente, quando eu estava longe da máquina ...

Eu não mudei nada no código do servidor em semanas, desde que eu estive trabalhando 100% por parte Javascript, e esse erro começou a aparecer recentemente.

Além disso, o código que estou fazendo é controlado 100%. Eu não estou fazendo qualquer interoperabilidade, chamar DLLs estranhos, nada. É pura VB.Net, então eu não vejo como eu poderia estar gerando um destes me ...

Agora, eu tenho usado esta nova máquina para um par de meses, e ele não está funcionando 100% certo. A cada 2 ou 3 dias que estou recebendo uma tela azul, por exemplo. Eu não tive tempo para diagnosticá-la corretamente, mas estou suspeitar que pode ter um chip de memória RAM defeituosa.

É possível que a RAM defeituosa pode levar a um AccessViolationException
Ou eu tenho um problema real que eu deveria estar olhando para? (Além da minha RAM)


UPDATE:

Eu realmente não estou sendo capaz de encontrar onde o erro ocorre, realmente.
Recebo o "exceção não tratada, quer de depuração?" diálogo, e quando eu anexar o depurador, eu tenho a lista de Threads, onde tenho todos os tópicos ASP.NET e 3 me criar.
Para estes 3 eu tenho uma pilha de chamadas, e eles estão todos parou em uma chamada Sleep () (que é expectável).
Para todos os outros tópicos, incluindo a que VS aponta para que o problema um, eu não tenho nenhuma pilha de chamadas. Eu também não tenho detalhes sobre a qualquer exceção.

Então, eu não sei se isso acontece cada vez no mesmo lugar ou não.

Quanto memtest, sim, eu vou fazer algo assim, eu estou apenas esperando para ter algum tempo para fazê-lo em breve, mas eu queria saber, entretanto, se isso poderia explicar este problema.


UPDATE 2:

Encontrei este no log de eventos ...

uma excepção não ocorreu e o processo foi terminado.

Application ID: DefaultDomain    
Process ID: 6632    
Exception: System.AccessViolationException

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

StackTrace:    at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

Todas as ideias do que fazer com isso?
graças
Daniel

Foi útil?

Solução

É possível que a RAM defeituosa pode levar a um AccessViolationException?

Sim, isso é possível. Se a memória subjacente de um processo não está se comportando de maneira previsível, então sim, isso poderia levar a muitos tipos diferentes de falhas de aplicação, incluindo um AccessViolationException.

é provável que em RAM com defeito está levando a um AccessViolationException?

Eu diria que é muito mais provável que uma falha em seu programa ou biblioteca que você chama é a culpa. O primeiro embora passo é descobrir o porquê ou, mais importante, onde o AccessViolationException está ocorrendo. Tente ligar um depurador, quebrar em AccessViolationExceptions e ver o que está realmente acontecendo.

Também sugestão de Ben S é uma boa para descartar o caso RAM rápido.

Outras dicas

Se você tiver dúvidas sobre a RAM com defeito, basta executar memtest86 .

Mas se o erro sempre acontece na mesma chamada, provavelmente não é RAM.

Será que isso só aconteça em sua máquina dev? Se sim, então é muito possível com defeito RAM / disco rígido (arquivo de paginação). Você também pode querer reinstalar o .NET Framework no caso de uma das bibliotecas (talvez uma das DLLs imagem nativa) foi corrompido.

Em termos simples:

Se o erro ocorrer em diferentes seções do código de cada vez, que é um bom indicador de que o errado de algo com o seu sistema como um todo.

Por outro lado, se o erro ocorre repetidamente no mesmo pedaço de código, então é quase certo que parte do código que está em falta.

Como uma resposta anterior registou, utilize Memtest86 + para confirmar que sua memória é boa ou não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top