1

Windows Server 2008 R2 표준 인 프로덕션 서버에 Windows 서비스가 있고 .net 프레임 워크 버전 4.5.2가 설치되어 있습니다..Net Windows 서비스가 MSVCR120_CLR0400.dll 예외로 다운 됨

이벤트 ID : 1026, 닷넷 런타임 예외 :

Application: XXX.Application.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.AccessViolationException 
Stack: 
    at System.Buffer.__Memcpy(Byte*, Byte*, Int32) 
    at System.Buffer.__Memcpy(Byte*, Byte*, Int32) 
    at System.Buffer._Memcpy(Byte*, Byte*, Int32) 
    at System.Buffer.Memcpy(Byte*, Byte*, Int32) 
    at System.String.ToCharArray() 
    at FluentValidation.Internal.Extensions+<>c__DisplayClassd`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.Decimal, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<CoerceToNonGeneric>b__c(System.Object) 
    at FluentValidation.Validators.PropertyValidatorContext.get_PropertyValue() 
    at FluentValidation.Validators.AbstractComparisonValidator.IsValid(FluentValidation.Validators.PropertyValidatorContext) 
    at FluentValidation.Validators.PropertyValidator.Validate(FluentValidation.Validators.PropertyValidatorContext) 
    at FluentValidation.Internal.PropertyRule+<Validate>d__8.MoveNext() 
    at System.Linq.Enumerable+<SelectManyIterator>d__14`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() 
    at System.Collections.Generic.List`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>) 
    at System.Linq.Enumerable.ToList[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>) 
    at FluentValidation.AbstractValidator`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Validate(FluentValidation.ValidationContext`1<System.__Canon>) 

이벤트 ID : 1000

Faulting application name: XX.Application.exe, version: 2.1.0.5017, time stamp: 0x59b1865e 
Faulting module name: MSVCR120_CLR0400.dll, version: 12.0.51209.34209, time stamp: 0x5348a2f4 
Exception code: 0xc0000005 
Fault offset: 0x0000000000001630 
Faulting process id: 0x12a8 
Faulting application start time: 0x01d3307a3a9dca66 
Faulting application path: XX.Application.exe 
Faulting module path: C:\Windows\system32\MSVCR120_CLR0400.dll 
Report Id: 5ea7c0b6-a0f0-11e7-8d71-0050568c317d 
서비스는 다음 이벤트 뷰어 공급을 제외하고 갑자기 마지막 주에 두 번 중지

나는 1 주일에 봤지만 어떤 대답도 얻을 수 없었다. Windows 서비스의 문제가 될 수있는 문제에 대해 도움을 주시겠습니까? 아니면 문제를 찾기 위해 어떻게해야합니까? 감사합니다. .

답변

-2

코드가 Enumerables에서 잘못 처리했을 수 있습니다. 내가 unhanded 예외에 가입하는 것이 좋습니다 근본 원인을 찾아 당신이 로그에 수 많은 세부 사항을 작성하려면 :이 질문을 게시 한 후

public static void Start() { 
AppDomain currentDomain = AppDomain.CurrentDomain; 
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException); 
running = true; 
ThreadStart ts = new ThreadStart(ServiceThreadBody); 
thread = new Thread(ts); 
thread.Name = "ServiceThread"; 
thread.Priority = ThreadPriority.BelowNormal; 
thread.Start(); 
} 
0

을, 우리는 우리가 전에 인 TeamCity에서 86 실행 플랫폼과 코드를 컴파일 한 것을 깨달았다 서버에 코드를 게시하십시오. 게시 한 후이 문제가 발생했습니다.하지만 서버가 64 비트이기 때문에 x64 플랫폼으로 게시해야합니다. 이 사실을 알게 된 후에는 릴리스 모드와 혼합 플랫폼이 설정된 Visual Studio에서 패키지를 다시 게시 할 수 있습니다.

2 주 동안 문제가 다시 발생하지 않았으므로 그 해결책을 공유하고자했습니다. 결론적으로, 우리 패키지를 실행하는 플랫폼이 혼란 스럽기 때문입니다. 이 문제가 생기면 게시 패키지 게시 플랫폼을 확인해야 할 수 있습니다.

관련 문제