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 입니다.어떤 조언이라도 해주시면 대단히 감사하겠습니다.
무제한 재귀(자신을 반복적으로 호출하는 함수 등)로 인해 발생하는 스택 오버플로 예외가 있는 것 같습니다.일반 시도/캐치 블록으로는 잡을 수 없습니다.DebugDiag 및 WinDbg를 사용하여 문제를 추적할 수 있습니다.
스택 오버플로가 발생할 때 크래시 덤프를 생성하도록 DebugDiag를 구성할 수 있습니다.예외가 발생합니다.https://www.microsoft.com/en-us/download/details.aspx?id=58210 에서 다운로드합니다.
- DebugDiag를 열고 규칙 추가를 클릭합니다.
- "충돌"을 이미 선택해야 합니다.[다음]을 누릅니다.
- "특정 IIS 웹 응용프로그램 풀"을 선택한 후 [다음]을 누릅니다.
- 애플리케이션 풀을 선택하고 다음을 클릭합니다.
- 고급 구성 창에 있어야 합니다.고급 설정에서 예외를 클릭합니다.
- 예외 추가를 클릭하고 전체 사용자 덤프의 작업 유형을 사용하여 스택 오버플로를 선택합니다.
- OK(확인)를 클릭하고 저장한 후 닫습니다.
다음에 스택 오버플로가 발생할 때예외가 발생합니다. 크래시 덤프가 발생합니다.이제 덤프 파일을 해석해야 합니다.
Windows용 디버깅 도구는 Windows SDK의 일부이며 http://msdn.microsoft.com/en-US/windows/hardware/gg463009/ 에서 다운로드할 수 있습니다.
- WinDbg를 사용하려면 기호 파일을 가져와야 합니다.기호 파일을 다운로드하여 로컬 폴더에 넣습니다.
- WinDbg를 엽니다.파일 메뉴에서 심볼 파일 경로를 클릭합니다.
- Symbol 경로 상자에 다음 명령을 입력하라고 나와 있습니다.
SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols
지역 잘했습니다. - 종료하고 WinDbg를 다시 열고 크래시 덤프를 열고 DebugDiag에서 만든 덤프 파일을 찾습니다.
- 합니다를 합니다.
.loadby sos clr
- 를 입력합니다.
!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
'programing' 카테고리의 다른 글
C: 2차원 배열 크기 (0) | 2023.10.07 |
---|---|
UIScroll모바일 사파리 탭과 같은 수평 페이징 보기 (0) | 2023.10.07 |
Android에서 활동에서 단편으로 데이터 전송 (0) | 2023.10.07 |
git reset --hard HEAD~1'과 'git reset --soft HEAD~1'의 차이점은 무엇입니까? (0) | 2023.10.07 |
프로젝트에서 위험을 고려할 때 -I 포함 스위치를 사용하는 이유는 무엇입니까? (0) | 2023.10.07 |