2010-06-02 8 views
1

PreApplicationStartMethodAttribute에 연결된 초기화 프로그램이있는 ASP.NET MVC 응용 프로그램을 만들었습니다. 초기화 할 때 정의한 인터페이스를 구현하는 컬렉션이 인스턴스화됩니다.컬렉션을 초기화 할 때 W3WP가 충돌합니다.

Fault bucket , type 0 
Event Name: APPCRASH 
Response: Not available 
Cab Id: 0 

Problem signature: 
P1: w3wp.exe 
P2: 7.5.7600.16385 
P3: 4a5bd0eb 
P4: clr.dll 
P5: 4.0.30319.1 
P6: 4ba21eeb 
P7: c00000fd 
P8: 0000000000001177 
P9: 
P10: 

Attached files: 

These files may be available here: 


Analysis symbol: 
Rechecking for solution: 0 
Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb 
Report Status: 0 

내가 컬렉션의 인스턴스를 제거하는 경우는, 응용 프로그램이 정상적으로 시작 :

Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bd0eb 
Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba21eeb 
Exception code: 0xc00000fd 
Fault offset: 0x0000000000001177 
Faulting process id: 0x1348 
Faulting application start time: 0x01cb0224882f4723 
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 
Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb 

그리고 : 나는이 컬렉션을 인스턴스화 할 때, W3wp.exe를 이벤트 로그에 다음과 같은 두 가지 이해할 수없는 항목이 충돌 . 인스턴스화를 종료하면 w3wp가 충돌합니다. 인터페이스를 수정하면 w3wp가 여전히 충돌합니다. 나는 인스턴스화를 유지하면서 다른 모든 것을 다르게하는 것을 주제로 모든 변형을 시도했지만 w3wp는 여전히 충돌합니다.

여기서 가장 큰 문제는 왜 w3wp가 충돌하는지 전혀 알 수 없다는 것입니다. 그것은 StackOverflowException이나 그와 같은 구체적인 것이 아닙니다. 위에서 언급 한 unintelligent junk가 있습니다.

내가 W3WP 프로세스를 디버깅 할 DebugDiagIISState을 사용하려했지만, DebugDiag는 64 년 후 덤프 분석에만 사용할 수 있습니다 (I 윈도우 7의 x64에서 실행 해요, 그래서 W3WP 프로세스가 64 비트 때문에입니다) 그리고 IISStat 내가 그것을 실행하려고하면 다음 말한다 :

D:\Programs\iisstate>IISState.exe -p 9204 -d 
Symbol search path is: SRV*D:\Programs\iisstate\symbols*http://msdl.microsoft.com/download/symbols 

IISState is limited to processes associated with IIS. 
If you require a generic debugger, please use WinDBG or CDB. 
They are available for download from http://www.microsoft.com/ddk/debugging. 
This error may also occur if a debugger is already attached to the process 
being checked. 

Incorrect Process Attachment 

내 W3WP 프로세스의 프로세스 ID가 올바른지 더블 점검 10 배를했습니다. 나는 IISState가 x86 프로세스를 디버그 할 수 있을지 의심 스럽다. 응용 프로그램에서 아무 곳이나 중단 점을 설정하는 것은 아무 것도하지 않습니다. 요청이 브라우저에서 IIS로 전달되는 즉시 중단 점이 적중되지 않고 w3wp가 중단됩니다. Visual Studio 2010에서 F5를 사용하여 응용 프로그램을 시작하거나 다른 응용 프로그램을 시작하여 w3wp 프로세스를 시작한 다음 VS2010 디버거를 연결 한 다음 오류 응용 프로그램을 방문하면 도움이되지 않습니다.

나는 또한뿐만 아니라 내 web.config 파일이 추가로 KB-911816에 설명 된대로 HTTP 모듈을 추가하는 시도하지했습니다 말할

<configuration> 
    <runtime> 
    <legacyUnhandledExceptionPolicy enabled="true" /> 
    </runtime> 
</configuration> 

도없이, 그것은하게 전혀 차이를. 그래서 w3wp 프로세스를 디버깅 할 방법이없고, 어떤 정보도 추출 할 수 없으며, 이벤트 로그에 덤프 된 가비지를 완료 할 수 없습니다. 아무도이 문제를 디버깅하는 방법에 대한 아이디어가 있다면 알려 주시기 바랍니다!

답변

1

W3WP 충돌을 일으킬 수있는 다양한 문제에 대한 유일하고 유일한 해결책이 아니라는 것을 알고 있지만 폐쇄 만하려면 내 자신의 질문에 대답 할 것입니다.

내 컬렉션은 RouteTable.Routes을 기반으로 초기화되었으므로 (아마도 ASP.NET 수명주기의 초기 단계에서는 아직 초기화되지 않았기 때문에) 예외가 발생했을 수 있습니다. 나중 단계에서 문제가 해결 될 때까지 RouteTable.Routes으로 통신을 연기합니다.

이것은 모두에게 도움이되는 해결책은 아니지만 나에게 효과적 이었지만 문제가 너무 명확하지 않아 누구나 댓글을 달고 답변 할 수 있도록 남겨 두었습니다. 어디서나이 문제에 대한 글을 게시 할 수 있으므로 장래에 좋은 참고 자료가 될 것입니다.

0

Windows 용 최신 디버깅 도구에서 ADplus.exe를 사용하여 크래시 덤프를 캡처합니다. 그런 다음

http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en

버전 6.12.2.633뿐만 아니라 그것은 adplus.exe의 작업 복사본을 포함해야이 (당신이 사용하지 않도록주의입니다

http://www.microsoft.com/whdc/devtools/debugging/default.mspx, 분석은 충돌이 발생 무엇을 보여 주어야한다 덤프 adplus.vbs).

관련 문제