2011-10-25 4 views
1

우리는 클래식 ASP로 작성된 아주 오래된 레거시 응용 프로그램이 하나 있습니다. 최근 몇 대의 서버에서 치명적인 오류가 발생했습니다. IIS 프로세스가 충돌합니다. 우리는 IIS 디버그 도구로 몇 가지 오류 스택 추적을 얻었습니다. 두 가지 일반적인 유형의 오류가 있습니다.트랩 가능한 오류 0xC0000005

응용 프로그램에는 ADO, Scripting.Dictionary, Scripting.FileSystem & MSXML6과 같은 몇 가지 유형의 COM 구성 요소 만 사용됩니다.

IIS 로그는 오류 설명이 액세스 위반 예외 (0xC0000005)이라고 말합니다.

오류의 원인 또는 향후 디버깅 방법에 대한 아이디어가 있습니까? 이 오류에 대한 자세한 정보를 얻을 수있는 방법은 매우 높이 평가됩니다.

감사합니다.

스택 트레이스 :

1

1996e18 
oleaut32!VariantCopy+173 
oleaut32!SafeArrayCopyData+14e 
oleaut32!SafeArrayCopy+e3 
oleaut32!VariantCopy+5b 
oleaut32!VariantCopyInd+1a1 
asp!CComponentObject::GetVariant+27 
asp!CApplnVariants::get_Item+da 
oleaut32!DispCallFunc+16a 
oleaut32!CTypeInfo2::Invoke+234 
asp!CDispatchImpl<IVariantDictionary>::Invoke+55 
oleaut32!CTypeInfo2::Invoke+58a 
asp!CDispatchImpl<IApplicationObject>::Invoke+55 
vbscript!IDispatchInvoke2+b2 
vbscript!IDispatchInvoke+59 
vbscript!InvokeDispatch+13a 
vbscript!InvokeByName+42 
vbscript!CScriptRuntime::RunNoEH+22b2 
vbscript!CScriptRuntime::Run+62 
vbscript!CScriptEntryPoint::Call+51 
vbscript!CSession::Execute+c8 
vbscript!COleScript::ExecutePendingScripts+144 
vbscript!COleScript::SetScriptState+14d 
asp!CActiveScriptEngine::TryCall+19 
asp!CActiveScriptEngine::Call+31 
asp!CallScriptFunctionOfEngine+5b 
asp!ExecuteRequest+17e 
asp!Execute+24c 
asp!CHitObj::ExecuteChildRequest+12c 
asp!CErrInfo::LogCustomErrortoBrowser+28a 
asp!CErrInfo::LogErrortoBrowserWrapper+8b 
asp!CErrInfo::LogError+77 
asp!HandleError+100 
asp!HandleErrorMissingFilename+ac 
asp!CActiveScriptEngine::Call+a7 
asp!CallScriptFunctionOfEngine+5b 
asp!ExecuteRequest+17e 
asp!Execute+24c 
asp!CHitObj::ViperAsyncCallback+3f0 
asp!CViperAsyncRequest::OnCall+92 
comsvcs!CSTAActivityWork::STAActivityWorkHelper+32 
ole32!EnterForCallback+c4 
ole32!SwitchForCallback+1a3 
ole32!PerformCallback+54 
ole32!CObjectContext::InternalContextCallback+159 
ole32!CObjectContext::DoCallback+1c 
comsvcs!CSTAActivityWork::DoWork+12d 
comsvcs!CSTAThread::DoWork+18 
comsvcs!CSTAThread::ProcessQueueWork+37 
comsvcs!CSTAThread::WorkerLoop+190 
msvcrt!_endthreadex+a3 
kernel32!BaseThreadStart+34 

2

scrrun!FreeList+f    
scrrun!VBADictionary::~VBADictionary+28    
scrrun!VBADictionary::`scalar deleting destructor'+d    
scrrun!VBADictionary::Release+17    
oleaut32!VariantClear+b1    
oleaut32!ReleaseResources+98    
oleaut32!_SafeArrayDestroyData+4d    
oleaut32!_SafeArrayDestroy+b3    
oleaut32!SafeArrayDestroy+f    
oleaut32!VariantClear+75    
vbscript!VAR::Clear+a6    
vbscript!CScriptRuntime::Cleanup+63    
vbscript!CScriptRuntime::Run+8d   
vbscript!CScriptEntryPoint::Call+51   
vbscript!CScriptRuntime::RunNoEH+1e02  
vbscript!CScriptRuntime::Run+62   
vbscript!CScriptEntryPoint::Call+51    
vbscript!CScriptRuntime::RunNoEH+1e02   
vbscript!CScriptRuntime::Run+62    
vbscript!CScriptEntryPoint::Call+51    
vbscript!CScriptRuntime::RunNoEH+1e02    
vbscript!CScriptRuntime::Run+62    
vbscript!CScriptEntryPoint::Call+51    
vbscript!CScriptRuntime::RunNoEH+1e02    
vbscript!CScriptRuntime::Run+62    
vbscript!CScriptEntryPoint::Call+51    
vbscript!CSession::Execute+c8   
vbscript!COleScript::ExecutePendingScripts+144   
vbscript!COleScript::SetScriptState+14d   
asp!CActiveScriptEngine::TryCall+19    
asp!CActiveScriptEngine::Call+31    
asp!CallScriptFunctionOfEngine+5b    
asp!ExecuteRequest+17e   
asp!Execute+24c    
asp!CHitObj::ViperAsyncCallback+3f0    
asp!CViperAsyncRequest::OnCall+92    
comsvcs!CSTAActivityWork::STAActivityWorkHelper+32    
ole32!EnterForCallback+c4    
ole32!SwitchForCallback+1a3    
ole32!PerformCallback+54    
ole32!CObjectContext::InternalContextCallback+159    
ole32!CObjectContext::DoCallback+1c    
comsvcs!CSTAActivityWork::DoWork+12d    
comsvcs!CSTAThread::DoWork+18    
comsvcs!CSTAThread::ProcessQueueWork+37    
comsvcs!CSTAThread::WorkerLoop+190    
msvcrt!_endthreadex+a3 
kernel32!BaseThreadStart+34 
+0

오류가 간헐적인지 또는 상수인지 여부는 밝히지 않았습니다. 이것은 도움이 될 것입니다. 또한 레거시 응용 프로그램이기 때문에 아마도 Server 2000/3 용으로 32 비트 모드로 작성되었을 것입니다. 2008R2 또는 64 비트를 실행하고 있습니까? 어쨌든, "HandleErrorMissingFilename"이라는 용어는 파일 액세스를 가리키는 것 같습니다. 나는 항상 Windows 서버가 이상한 오류를 내고있을 때 파일 사용 권한을 의심합니다. 테스트 환경에서 로컬 웹 계정 관리자가 문제를 제거하는지 확인하도록 시도 할 수 있습니다. – Morbo

+0

이 오류는 하루에 약 6 번 자주 나타납니다. Windows Server 2003 R2에서 32 비트 모드로 실행됩니다. 이미 IUSR을 Admins 그룹에 추가했습니다. 이 오류는 우리 테스트 서버에서 재현되지 않습니다. – dimonzozo

답변

0

우리는 매우 비슷한 상황이 지난 몇 주를 가지고 있었다. 이 문제를 추적하는 것은 매우 복잡했습니다. 문제는 VB6 코드의 OnError 처리기에 있습니다. 재생 2 가지 경우가 있습니다 :

  • 당신이하지의 OnError 핸들러, 오류가 발생 는
  • 오류의 OnError 처리기에서 발생하고 IIS로 직접 이동 IIS에 직접 간다.

~ 100 이러한 오류가 발생하면 IIS가 정상적으로 작동하지 않습니다. 이 순간 이후로는 예측할 수없는 행동이 될 것입니다.