2012-04-28 2 views
0

ASP.NET 응용 프로그램이 있습니다. 정기 간행물로 인해 사용자가 불만을 갖습니다. 로그에서주기적인 W3WP.exe 충돌이 발생했습니다.

나는 참조 : 충돌에서

 
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2 
Faulting module name: nlssorting.dll, version: 4.0.30319.261, time stamp: 0x4ec9f3aa 
Exception code: 0xc00000fd 
Fault offset: 0x0000000000002296 
Faulting process id: 0xfe4 
Faulting application start time: 0x01cd23bb335b5514 
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\nlssorting.dll 
Report Id: f25aaeba-8fae-11e1-aeea-0030488d6555 

내가 볼 덤프 :

 
00000000`18187760 00000000`ffffffff app_code!FunBeatRace.Configuration.SiteConfiguration.get_CurrentBrand+0x5a 
00000000`181877a0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.CreateResourceKeyFromCultureName+0x16 
00000000`181877f0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.GetResourceCache+0x78 
00000000`181878c0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.System.Web.Compilation.IResourceProvider.GetObject+0x9b 
00000000`18187900 00000000`ffffffff system_web_ni!System.Web.Compilation.ResourceExpressionBuilder.GetResourceObject+0x1f 
00000000`18187940 00000000`ffffffff system_web_ni!System.Web.HttpContext.GetGlobalResourceObject+0x27 

이 일반 응용 프로그램 작업입니다.

 
SYMBOL_NAME: mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke 

FOLLOWUP_NAME: MachineOwner 

MODULE_NAME: mscorlib_ni 

IMAGE_NAME: mscorlib.ni.dll 

DEBUG_FLR_IMAGE_TIMESTAMP: 4ec9f74e 

STACK_COMMAND: _EFN_StackTrace ; ** Pseudo Context ** ; kb 

FAILURE_BUCKET_ID: STACK_OVERFLOW_CALL_c00000fd_mscorlib.ni.dll!DomainNeutralILStubClass.IL_STUB_PInvoke 

BUCKET_ID: X64_APPLICATION_FAULT_STACK_OVERFLOW_WRONG_SYMBOLS_CALL_mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke 

WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/w3wp_exe/7_5_7601_17514/4ce7afa2/nlssorting_dll/4_0_30319_261/4ec9f3aa/c00000fd/00002296.htm?Retriage=1 

Followup: MachineOwner 

그러나 나는 어떤 문제 undertand에 그나마 : 는하지만 결과에서이 일어나는

 
000000001819D600 000007FF001E116B App_Code!FunBeatRace.Configuration.SiteConfiguration.get_CurrentBrand()+0x1cb 
000000001819D640 000007FF001E2F06 App_Code!FunBeatRace.Globalization.CustomResourceProvider.CreateResourceKeyFromCultureName(System.String)+0x16 
000000001819D690 000007FF001E29E8 App_Code!FunBeatRace.Globalization.CustomResourceProvider.GetResourceCache(System.String)+0x78 

MANAGED_STACK_COMMAND: _EFN_StackTrace 

LAST_CONTROL_TRANSFER: from 000007fef99c3742 to 000007fef80b2296 

ADDITIONAL_DEBUG_TEXT: Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[PSEUDO_THREAD] 

FAULTING_THREAD: ffffffffffffffff 

BUGCHECK_STR: APPLICATION_FAULT_STACK_OVERFLOW_WRONG_SYMBOLS_CALL 

PRIMARY_PROBLEM_CLASS: STACK_OVERFLOW_CALL 

DEFAULT_BUCKET_ID: STACK_OVERFLOW_CALL 

STACK_TEXT: 
00000000`18187530 00000000`ffffffff mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke+0xbe 
00000000`18187620 00000000`ffffffff mscorlib_ni!System.Globalization.CompareInfo.GetHashCodeOfString+0xa9 
00000000`18187670 00000000`ffffffff mscorlib_ni!System.Collections.Hashtable.get_Item+0x5c 
00000000`18187720 00000000`ffffffff system_web_ni!System.Web.SessionState.SessionStateItemCollection.get_Item+0x32 

후 우리는 가지고있다.

이 문제를 해결할 수있는 방법을 알려주세요.

답변

0

이 비슷합니다 http://connect.microsoft.com/VisualStudio/feedback/details/665157/nlssorting-fault-crashes-iis

또한과 같이 코드를 Global.asax.cs의함으로써 Application_Error의 오류() 메소드를 잡으려고 노력에 값을 찾을 수 있습니다 :

protected void Application_Error(Object sender, EventArgs e) { 
    Exception ex = HttpContext.Current.Server.GetLastError(); 
    // handle it 
    HttpContext.Current.Context.ClearError(); 
} 

당신은 또한 않을 수 시간에서 해결 방법으로 올라간다 How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?

+0

위의 링크에서 나는 내 질문에 대한 대답을 찾지 못한다 ( – Diver63

0

Microsoft의 설명서 w3wp.exe에 따르면 처리되지 않은 예외가 발생할 때가끔 충돌이 발생합니다.

내 경험에 의하면 오버플로로 인해 스택이 절망적으로 손상 될 때 w3wp.exe이 충돌하고 메모리 손상으로 인해 try-catch 블록에서이 종류의 오류를 처리 할 수 ​​없습니다.

주된 이유는 너무 많은 재귀 호출 일 수 있습니다. 각 호출은 종료 될 때까지 일정량의 스택을 사용하기 때문입니다. 무한 재귀가있을 수 있습니까?

두 번째 이유는 w3wp.exe 또는 .NET Framework에서 메모리 관리가 잘못되어이 상황을 감지하고 사용자에게 스택 오버플로를 알리는 대신 메모리 손상이 발생할 수 있기 때문입니다.

관련 문제