programing

w3wp clr.dll 오류 디버그 방법

newsource 2023. 10. 7. 11:01

w3wp clr.dll 오류 디버그 방법

제 고객은 ASP를 가지고 있습니다.NET 애플리케이션이 두 개의 프로덕션 서버에 설치됩니다(NLB와 균형을 이루지만 이는 무관함).두 서버 모두 3-4시간마다 충돌하며 다음 이벤트 뷰어에 기록된 오류가 발생합니다.

프로그램 : w3wp.exe, : 7.5.7601.17514, : 0x4ce7afa2
고장 모듈 이름: clr.dll, 버전: 4.0.30319입니다.18034, 타임 스탬프 : 0x50b5a783
드: 0xc00000fd셋: 0x00000001a840
스 ID: 0xd50
프로그램 간: 0x01ce97fe076d27b4
. c:\windows\system32\inetsrv\w3wp.exe
모듈 경로에 장애가 있습니다. C:\Windows\Microsoft.: NET\framework64\v4.0.30319\clr.dll 신고번호 : e0c90a5f-0455-11e3-8f0e-005056891553

디버그를 어떻게 해야 할지, 어디서부터 시작해야 할지 전혀 모르겠습니다.충돌이 발생하려고 할 때 서버 프로세서 사용량은 100%로 급증하고 그대로 유지됩니다.문제가 있는 프로세스는 w3wp.exe 입니다.제 코드가 오류를 발생시키고 있는지 아닌지 조차 확신할 수 없습니다.IIS 7.5 입니다.어떤 조언이라도 해주시면 대단히 감사하겠습니다.

무제한 재귀(자신을 반복적으로 호출하는 함수 등)로 인해 발생하는 스택 오버플로 예외가 있는 것 같습니다.일반 시도/캐치 블록으로는 잡을 수 없습니다.DebugDiagWinDbg를 사용하여 문제를 추적할 수 있습니다.

스택 오버플로가 발생할 때 크래시 덤프를 생성하도록 DebugDiag를 구성할 수 있습니다.예외가 발생합니다.https://www.microsoft.com/en-us/download/details.aspx?id=58210 에서 다운로드합니다.

  1. DebugDiag를 열고 규칙 추가를 클릭합니다.
  2. "충돌"을 이미 선택해야 합니다.[다음]을 누릅니다.
  3. "특정 IIS 웹 응용프로그램 풀"을 선택한 후 [다음]을 누릅니다.
  4. 애플리케이션 풀을 선택하고 다음을 클릭합니다.
  5. 고급 구성 창에 있어야 합니다.고급 설정에서 예외를 클릭합니다.
  6. 예외 추가를 클릭하고 전체 사용자 덤프의 작업 유형을 사용하여 스택 오버플로를 선택합니다.
  7. OK(확인)를 클릭하고 저장한 후 닫습니다.

다음에 스택 오버플로가 발생할 때예외가 발생합니다. 크래시 덤프가 발생합니다.이제 덤프 파일을 해석해야 합니다.

Windows용 디버깅 도구는 Windows SDK의 일부이며 http://msdn.microsoft.com/en-US/windows/hardware/gg463009/ 에서 다운로드할 수 있습니다.

  1. WinDbg를 사용하려면 기호 파일을 가져와야 합니다.기호 파일을 다운로드하여 로컬 폴더에 넣습니다.
  2. WinDbg를 엽니다.파일 메뉴에서 심볼 파일 경로를 클릭합니다.
  3. Symbol 경로 상자에 다음 명령을 입력하라고 나와 있습니다.SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols 지역 잘했습니다.
  4. 종료하고 WinDbg를 다시 열고 크래시 덤프를 열고 DebugDiag에서 만든 덤프 파일을 찾습니다.
  5. 합니다를 합니다..loadby sos clr
  6. 를 입력합니다.!CLRStack

결과에서 문제가 무엇인지 명확해야 합니다(반복적으로 호출되던 함수를 보여주는 여러 줄을 볼 수 있을 것입니다)

위의 답변에 약간의 추가사항이 있습니다.사용자 로그인 시 오류가 발생한 탐색기 확장을 개발합니다.따라서 사용자의 경우 "플래시 스크린"으로 보입니다(익스플로러가 시작 및 충돌을 시도한 후 다시 시작하는 등).DebugDiag 및 WinDbg가 설치된 다른 사용자 계정으로 로그인했습니다.윈도우 8.1을 같이 사용하고 있습니다.오늘(2014년 1월 13일)의 모든 최신 업데이트가 포함된 Net 4.0. 몇 가지 기호를 로컬로 다운로드하려고 했지만 잘못된 서명으로 인해 WinDbg가 clr.pdb를 로드할 수 없습니다.

온라인에서 심볼을 사용하여 해결 - "SRV*http://msdl.microsoft.com/download/symbols "을 심볼 경로로 사용합니다.

또 다른 원인으로 "무한 재귀적으로 작동"할 수도 있습니다.유한 루프가 발생하면 Windows에서 교착 상태를 방지하고 관련 애플리케이션 풀을 사용하지 않도록 설정합니다.

저는 오늘 같은 이슈를 만났습니다.저는 상위 프로젝트-하위 프로젝트를 나열하는 재귀 함수를 가지고 있습니다.하나의 프로젝트 자체가 상위 프로젝트로 설정되어 있으며 리커시브 함수가 모든 상위 프로젝트를 나열할 때 무한 루프가 발생합니다.

이벤트 뷰어 -> Windows 로그 -> 시스템을 확인하고 찾을 수 있었습니다.

응용 프로그램 풀 'DankAppPool'이(가) 해당 응용 프로그램 풀을 서비스하는 프로세스에서 일련의 장애로 인해 자동으로 사용되지 않도록 설정되고 있습니다.

그 아래:

프로세스 서비스 응용 프로그램 풀 'DankAppPool'에서 윈도우즈 Process Activation Service와 치명적인 통신 오류가 발생했습니다.프로세스 ID는 '5704'였습니다.데이터 필드에 오류 번호가 들어 있습니다.

그리고:

QueueMonitor 서비스가 예기치 않게 종료되었습니다.지금까지 32번을 해왔습니다.600,000밀리초 후에 다음과 같은 시정 조치가 실행됩니다.서비스를 다시 시작합니다.

적어도 QueueMonitor 서비스는 시작할 곳입니다.

언급URL : https://stackoverflow.com/questions/18335678/how-to-debug-w3wp-clr-dll-error