문제

나는 지금 약 1 년 동안 일하고있는 웹 사이트가 있습니다. 최근에는 시스템을 던지기 시작했습니다.

JavaScript 부분에서 100% 작업 한 이후 몇 주 동안 서버 코드에서 아무것도 변경하지 않았 으며이 오류가 최근에 나타나기 시작했습니다.

또한 제가하고있는 코드는 100% 관리됩니다. 나는 어떤 인터 로프도하지 않고 이상한 DLL을 부르지 않습니다. 그것은 순수한 vb.net이므로, 내가 어떻게 직접 생성 할 수 있는지 알지 못합니다 ...

이제 저는이 새로운 기계를 몇 달 동안 사용해 왔으며 100% 올바르게 작동하지 않습니다. 예를 들어 2 ~ 3 일마다 블루 스크린을 받고 있습니다. 나는 그것을 올바르게 진단 할 시간이 없었지만 RAM 칩이 결함이 있다고 생각합니다.

결함이있는 RAM이 AccessViolationException으로 이어질 수 있습니까?
아니면 조사해야 할 실제 문제가 있습니까? (내 램 외에)


업데이트:

실제로 오류가 발생하는 위치를 실제로 찾을 수 없습니다.
"처리되지 않은 예외, 디버그 하시겠습니까?" 대화 상자, 디버거를 첨부 할 때 모든 asp.net 스레드가있는 스레드 목록이 있고 3 스레드 목록이 있고 3 개를 만듭니다.
이 3의 경우 콜 스택이 있으며 모두 수면 () 호출 (예상 가능)에서 멈췄습니다.
vs를 포함하여 다른 모든 스레드에 대해 문제 1을 가리키는 스레드에 대해서는 통화 스택이 없습니다. 또한 예외에 대한 세부 정보도 없습니다.

그래서 나는 그것이 같은 장소에서 매번 발생하는지 여부를 모른다.

Memtest에 관해서는, 그렇습니다. 저는 그런 일을 할 것입니다. 곧 시간을 보내고 싶지만 그 동안이 문제를 설명 할 수 있는지 알고 싶었습니다.


UPDATE 2:

이벤트 로그에서 이것을 찾았습니다 ...

처리되지 않은 예외가 발생하고 프로세스가 종료되었습니다.

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)

이것을 만들어야 할 아이디어가 있습니까?
감사
다니엘

도움이 되었습니까?

해결책

결함이있는 RAM이 AccessViolationException으로 이어질 수 있습니까?

예, 가능합니다. 프로세스의 기본 메모리가 예측 가능하게 작동하지 않으면 예, AccessViolationException을 포함하여 다양한 유형의 응용 프로그램 결함으로 이어질 수 있습니다.

RAM이 잘못되었을 가능성이 높아질 것입니다.

나는 그것이라고 말할 것입니다 많이 귀하가 호출하는 프로그램이나 라이브러리의 결함이 잘못 될 가능성이 높습니다. 그러나 첫 번째 단계는 AccessViolationException이 어디에서 발생하는지 또는 더 중요한 이유를 찾는 것입니다. 디버거를 첨부하고 AccessViolationExceptions를 깨고 실제로 무슨 일이 일어나고 있는지 확인하십시오.

또한 Ben S의 제안은 RAM 케이스를 빠르게 배제하기에 좋은 것입니다.

다른 팁

램에 대한 의문이 있다면 그냥 달리기 memtest86.

그러나 오류가 항상 같은 호출에서 발생하면 아마도 RAM이 아닐 수도 있습니다.

이것은 개발자 기계에서만 발생합니까? 그렇다면 RAM/하드 디스크 (페이지 파일)가 매우 가능합니다. 라이브러리 중 하나 (아마도 기본 이미지 DLL 중 하나)가 손상된 경우 .NET 프레임 워크를 다시 설치할 수도 있습니다.

간단히 말해서:

오류가 매번 다른 코드 섹션에서 발생하는 경우 시스템 전체에 문제가 있다는 좋은 지표입니다.

반면에, 오류가 같은 코드에서 반복적으로 발생하면 결함이있는 코드 조각입니다.

이전 답변에서 알 수 있듯이 Memtest86+를 사용하여 메모리가 양호한 지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top