Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

CLR20r3 오류 해결을 위해 mscorlib.dll을 덮어쓸 때 주의할 점

우연히, 다음과 같은 글을 보게 되었습니다.

[Solved] CLR20r3 오류 해결! mscorlib 문제  
; http://sunnyholic.com/archive/20130513

정리해 보면, 3DMark 11 프로그램을 실행하는데 다음과 같은 오류가 발생했고,

오류 버킷 , 유형 0
이벤트 이름: CLR20r3
응답: 사용할 수 없음
Cab ID: 0

문제 서명:
P1: 3dmark11.exe
P2: 1.0.5.0
P3: 516674fb
P4: mscorlib
P5: 4.0.0.0
P6: 4ba22001
P7: 105d
P8: 1c
P9: PSZQOADHX1U5ZAHBHOHGHLDGIY4QIXHX
P10: 

오류 있는 응용 프로그램 이름: 3DMark11.exe, 버전: 1.0.5.0, 타임스탬프: 0x516674fb
오류 있는 모듈 이름: KERNELBASE.dll, 버전: 6.1.7601.18015, 타임스탬프: 0x50b8479b
예외 코드: 0xe0434352
오류 오프셋: 0x0000000000009e5d
오류 있는 프로세스 ID: 0x128c
오류 있는 응용 프로그램 시작 시간: 0x01ce4f971b22fe68
오류 있는 응용 프로그램 경로: C:\Program Files\Futuremark\3DMark11\bin\x64\3DMark11.exe
오류 있는 모듈 경로: C:\Windows\system32\KERNELBASE.dll
보고서 ID: 58e3e48d-bb8a-11e2-8c45-bc5ff48f1017

응용 프로그램: 3DMark11.exe
Framework 버전: v4.0.30319
설명: 처리되지 않은 예외로 인해 프로세스가 종료되었습니다.
예외 정보:System.Reflection.TargetInvocationException
스택:
   위치: System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
   위치: System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
   위치: System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
   위치: System.Delegate.DynamicInvokeImpl(System.Object[])
   위치: System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   위치: MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   위치: System.Windows.Threading.Dispatcher.WrappedInvoke(System.Delegate, System.Object, Int32, System.Delegate)
   위치: System.Windows.Threading.DispatcherOperation.InvokeImpl()
   위치: System.Threading.ExecutionContext.runTryCode(System.Object)
   위치: System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
   위치: System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   위치: System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   위치: System.Windows.Threading.DispatcherOperation.Invoke()
   위치: System.Windows.Threading.Dispatcher.ProcessQueue()
   위치: System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   위치: MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   위치: MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   위치: System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   위치: MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   위치: System.Windows.Threading.Dispatcher.WrappedInvoke(System.Delegate, System.Object, Int32, System.Delegate)
   위치: System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   위치: MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
   위치: MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
   위치: System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
   위치: ?.()
   위치: System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   위치: System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   위치: System.Threading.ThreadHelper.ThreadStart()

이를 해결하기 위해 (그 글에 첨부된) mscorlib.dll을 "C:\Windows\Microsoft.NET\Framework\v4.0.30319" 폴더에 덮어썼다는 것입니다. 어쨌든, 오류가 해결되었다니 다행이지만... 호기심이 생기더군요. ^^ 그래서 그 글에 공개한 mscorlib.dll 파일을 다운로드 받아 버전을 확인해 보았습니다.

그 순간, 뜨악~~~ 했습니다. 바로 1.0.3705.288이었고 이는 .NET Framework 1.0 SP2가 설치되었을 때의 mscorlib.dll을 의미합니다. 다시 말해, .NET Framework 4.0이 설치된 폴더에 .NET 1.0 시절의 mscorlib.dll을 덮어써 해결한 것입니다.

그래서 해결이 되었다는 것은 곧! 3dmark11.exe 파일이 .NET 1.0 또는 2.0 대상으로 만들어진 응용 프로그램임을 의미합니다. 이쯤에서 대충 문제가 된 원인을 알 듯합니다. 위의 오류 보고를 보면, "Framework 버전: v4.0.30319"라는 말이 나오는데, .NET 1.0(또는 2.0) 대상의 응용 프로그램이 .NET 4.0에서 호환이 안돼 문제가 발생한 것입니다.




올바른 해결책은, supportedRuntime을 사용했어야 합니다. .NET 4.0에서 문제가 발생했으니 3DMark11.exe.config 파일을 만들어 다음의 내용을 포함시켰다면 잘 해결되었을 것입니다.

<?xml version="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

또는,

<?xml version="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="v1.1.4322"/>
    </startup>
</configuration>

그나저나 큰일이군요. 저 글을 보고 .NET 4.0 mscorlib.dll을 10년도 더 된 1.0용 mscorlib.dll로 교체한 사람들은... 아마도 이후 .NET 4.0용 응용 프로그램을 실행할 때 또 이상한 문제를 겪을 텐데... ^^;;;




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/23/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2016-02-13 12시19분
[행인] 상기 문제를 검색 하다가 얘기하신 글을 먼저 보게 되었고, 어떻게 하다보니 올려주신 이 글도 보게되었습니다. (파일 복사는 하지 않았습니다)

저는 비슷한 문제인데, 로지텍 setpoint 설치시 부가적으로 설치해야하는 logioptions 라는 프로그램과 관련하여 일어납니다.

.Net Framework 와의 문제는 분명하고요. (logioption.exe 라는 프로그램이 netframework를 반드시 필요로 하거든요. 다른 컴에서 관련하여 다른 문제도 있었고요)

충돌이 두개가 연속해서 발생하는데, 하나는 위의 문제와 비슷한 문제이고 두번째는 appcrash 문제입니다.

자세한 내용은 아래와 같습니다.

문제 이벤트 이름:    CLR20r3
  문제 서명 01:    LogiOptionsUI.exe
  문제 서명 02:    3.20.35.0
  문제 서명 03:    56466621
  문제 서명 04:    mscorlib
  문제 서명 05:    4.6.1055.0
  문제 서명 06:    563c113c
  문제 서명 07:    157f
  문제 서명 08:    12f
  문제 서명 09:    System.UnauthorizedAccess
  OS 버전:    6.1.7601.2.1.0.256.1
  로캘 ID:    1042
  추가 정보 1:    d61a
  추가 정보 2:    d61a364401f9abf2af49d58b132968c7
  추가 정보 3:    dc7c
  추가 정보 4:    dc7c805f8f99106f0385807a107cfc2e



두번째 연이어 일어나는 오류는

 문제 이벤트 이름:    APPCRASH
  응용 프로그램 이름:    LogiOptionsUI.exe
  응용 프로그램 버전:    3.20.35.0
  응용 프로그램 타임스탬프:    56466621
  오류 모듈 이름:    KERNELBASE.dll
  오류 모듈 버전:    6.1.7601.19135
  오류 모듈 타임스탬프:    56a1c9ac
  예외 코드:    c000041d
  예외 오프셋:    000000000000965d
  OS 버전:    6.1.7601.2.1.0.256.1
  로캘 ID:    1042
  추가 정보 1:    e92e
  추가 정보 2:    e92ea9f19a11471a5129a9a8df62bc89
  추가 정보 3:    d452
  추가 정보 4:    d45210f06407bfa4bbb1966567b47f6d


이런 문제입니다.

윈도우7 얼티밋 64비트 버전이고 프레임워크는 4.6.1 최신버전입니다. (logioptions.exe는 64비트 프로그램입니다.)

이 문제를 설명해주신 config 파일을 만들면 해결될 수 있을까요?

config파일을 만든다는게 해당 내용을 넣고 메모장 같은 걸로 Logioptions.exe.config 파일을 만들어서

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 이 폴더에 집어 넣으면 되는건가요?

한 번 시험삼아 해봤는데 달라지는게 없더군요. (혹시 재부팅을 해야하는지, 아니면 저장시 ANSI, UTF-8, 유니코드 이런 방식이 있던데 적절한 방식을 선택해야 하는 건지..)

혹시나 해서 글을 남겨 봅니다.

관심있으신 문제라면 조언 부탁드립니다.

감사합니다.
[guest]
2016-02-13 01시16분
[행인] 위의 문제 해결했습니다.

정확히 말해서 해결했다기 보다는 차선책을 썼다고 해야겠네요.

LogiOptions.exe 라는 프로그램의 낮은 버전(2.x버전)을 설치하니 되네요.

http://support.logitech.com/ko_kr/software/options


써놓은 질문 지울까 하다가 이런 충돌 문제 혹시나 관심 있으실까하여 일단 그대로 둡니다.

주인장님의 판단하에 삭제하셔도 되고요.

여튼 우연한 기회에 이런 포스팅도 하시는 분이 계시다는 걸 알게 되었네요^^;

그럼 즐거운 주말 되시길 바랍니다.
[guest]
2016-02-14 06시07분
첫 번째 이벤트 로그 오류는 전형적인 보안 오류입니다. 아마 윈도우 7에서 관리자 권한으로 실행하면 오류가 발생하지 않을 것입니다.

그리고 두 번째 문제는 꼭 이 글의 문제 상황과 같다고 볼 수는 없습니다. 왜냐하면, 이런 유의 문제는 다양한 상황에서 발생할 수 있기 때문입니다.

참고로, config 파일은 메모장으로 만들어도 되고, 해당 exe 파일과 동일한 폴더에 넣어두시면 됩니다.

이전 버전을 설치해서 해결했다고 하시니,,, 일단은 굳이 안 해도 되지 않을까 싶습니다. ^^
정성태
2016-05-16 11시47분
[하연] 안녕하세요! 저도 위에서 적힌 문제와 같은 문제로 http://sunnyholic.com/archive/20130513 이 글을 따라하려다가 님 글을 보고 들어온 사람입니다.
supportedRuntime을 어떻게 사용하는지, 3DMark11.exe.config을 어떻게 만들어 어디에 넣어야 하는지
자세히 알려주실 수 있을까요...?


참고로 제게 일어난 오류는 이렇게 나왔습니다!

설명:
  Stopped working

문제 서명:
  문제 이벤트 이름: CLR20r3
  문제 서명 01: sims3launcherw.exe
  문제 서명 02: 0.2.0.196
  문제 서명 03: 51fc4e55
  문제 서명 04: Sims3Launcher
  문제 서명 05: 0.2.0.196
  문제 서명 06: 51fc4e55
  문제 서명 07: 37d
  문제 서명 08: c6
  문제 서명 09: System.BadImageFormatException
  OS 버전: 6.1.7601.2.1.0.256.1
  로캘 ID: 1042

온라인 개인 정보 취급 방침 읽기:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0412

온라인 개인 정보 취급 방침을 사용할 수 없으면 오프라인으로 개인 정보 취급 방침을 읽으십시오.
  C:\Windows\system32\ko-KR\erofflps.txt
[guest]
2016-05-16 12시06분
@하연 관련해서 다른 문제로 보입니다. 해당 글을 썼던 사람은 3dmark 프로그램으로 System.Reflection.TargetInvocationException 예외를 겪은 문제이지만, 하연 님의 경우에는 전혀 다른 프로그램이면서 예외도 System.BadImageFormatException으로 아주 다른 문제입니다.

어쨌든, 문제가 제각기 다를 수 있기 때문에 다음의 글을 읽어보시고 스스로 해결해 보세요.

supportedRuntime 옵션과 System.BadImageFormatException 예외
; http://www.sysnet.pe.kr/2/0/1233

참고로, .config 파일은 exe 실행 파일이 있는 폴더에 [실행파일명].exe.config으로 만들면 됩니다.
정성태
2016-09-25 01시29분
[컴맹] 설명:
  Stopped working

문제 서명:
  문제 이벤트 이름:    CLR20r3
  문제 서명 01:    ntleagui.exe
  문제 서명 02:    1.0.0.0
  문제 서명 03:    4df0a158
  문제 서명 04:    System
  문제 서명 05:    2.0.0.0
  문제 서명 06:    4a275e12
  문제 서명 07:    3a97
  문제 서명 08:    394
  문제 서명 09:    System.ComponentModel.Win32
  OS 버전:    6.1.7600.2.0.0.768.3
  로캘 ID:    1041
제가 예전에 무슨 문제로 지금 파일 이름 프로그램 및 기능에서 저런이름의 파일을 체크를 해제했던거같은데 그후에 컴퓨터가 고장나서 전에 있던 데이터로 복구하고 다시 들어왔으나 문제점을 찾지 못했습니다. 카오스원이라는 프로그램을 실행할때 뜹니다 무슨 문제인가요
[guest]
2016-09-25 02시33분
이런 유의 문제는 원인이 다양합니다. 대개의 경우, 해당 프로그램을 만든 개발사에 문의하는 것이 좋습니다.
정성태
2017-10-06 09시15분
[동준 ] 전 저 위글을 보고 1.0용 mscorib.dll로 교체한사람입니다.. 전 이렇게 오류가 떴는데요...
문제 서명:
  문제 이벤트 이름:    CLR20r3
  문제 서명 01:    3dmark-setup.exe
  문제 서명 02:    2.0.2809.0
  문제 서명 03:    569ab3bd
  문제 서명 04:    mscorlib
  문제 서명 05:    4.7.2053.0
  문제 서명 06:    58fa6bd6
  문제 서명 07:    3b8a
  문제 서명 08:    14
  문제 서명 09:    System.TypeInitialization
  OS 버전:    6.1.7601.2.1.0.768.3
  로캘 ID:    1042
  추가 정보 1:    0a9e
  추가 정보 2:    0a9e372d3b4ad19135b953a78882e789
  추가 정보 3:    0a9e
  추가 정보 4:    0a9e372d3b4ad19135b953a78882e789

온라인 개인 정보 취급 방침 읽기:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0412

온라인 개인 정보 취급 방침을 사용할 수 없으면 오프라인으로 개인 정보 취급 방침을 읽으십시오.
  C:\Windows\system32\ko-KR\erofflps.txt
 3d mark 네이버에서 다운받고 점수좀 볼려고 했느넫 안되더라구요.. ㅜㅜ 원래 처음엔 api-ms-win-core-libraryloader-l1-2-0.dll 파일이 없다고 해서 이 파일을 구해서 syswow64에 넣었습니다 그리고 이젠 되겠지 하며 봤는데 안되더라구요... 어떻게 살릴 수 없을까요? 이미 1.0용 mscorlib.dll 로 교체한 저는 답이없나요?.... 포멧할까요?
[guest]
2017-10-06 09시55분
@동준 글쎄요... 참 뭐라 딱히 조언할 것이 없군요. 일단 아는 분 중에서 C:\Windows\Microsoft.NET\Framework\v4.0.30319 폴더의 mscorlib.dll 파일을 구해서 다시 덮어쓰는 것이 좋습니다.

그래도 좀 유의해야 할 것이 있는데요. 닷넷은 패치 버전마다 dll의 버전이 함께 달라집니다. 올려주신 이벤트 로그에 보니 "문제 서명 05: 4.7.2053.0"이 바로 닷넷 패치의 일괄 버전으로 보이는데 가능한 그 버전으로 구하는 것이 좋습니다. 그게 여의치 않다면 그래도 1.0 버전의 mscorlib.dll보다는 나을 것이므로 그냥 복사하시는 것이 좋습니다.
정성태
2017-10-06 12시47분
[동준] 그냥 닷넷 프레임워크를 삭제하고 재설치하면 안되나요?
[guest]
2017-10-07 01시43분
그래도 됩니다.
정성태
2017-11-19 02시11분
[이동민] 문제 서명:
  문제 이벤트 이름:    CLR20r3
  문제 서명 01:    ldeviceinstaller.exe
  문제 서명 02:    0.0.0.0
  문제 서명 03:    5a0df773
  문제 서명 04:    mscorlib
  문제 서명 05:    4.0.0.0
  문제 서명 06:    53b4fc1e
  문제 서명 07:    3795
  문제 서명 08:    3f
  문제 서명 09:    System.Windows.Markup.XamlParse
  OS 버전:    6.1.7601.2.1.0.256.48
  로캘 ID:    1042
  추가 정보 1:    14d4
  추가 정보 2:    14d48c4982491b11dcb6b018d51ed34b
  추가 정보 3:    b116
  추가 정보 4:    b116445ae2e794054374f1858ec08bf6
[guest]

... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12193정성태3/16/20209421개발 환경 구성: 485. docker - SAP Adaptive Server Enterprise 컨테이너 실행 [1]
12192정성태3/14/202011882개발 환경 구성: 484. docker - Sybase Anywhere 16 컨테이너 실행
12191정성태3/14/202012231개발 환경 구성: 483. docker - OracleXE 컨테이너 실행 [1]
12190정성태3/14/20208423오류 유형: 606. Docker Desktop 업그레이드 시 "The process cannot access the file 'C:\Program Files\Docker\Docker\resources\dockerd.exe' because it is being used by another process."
12189정성태3/13/202013222개발 환경 구성: 482. Facebook OAuth 처리 시 상태 정보 전달 방법과 "유효한 OAuth 리디렉션 URI" 설정 규칙
12188정성태3/13/202015406Windows: 169. 부팅 시점에 실행되는 chkdsk 결과를 확인하는 방법
12187정성태3/12/20208182오류 유형: 605. NtpClient was unable to set a manual peer to use as a time source because of duplicate error on '...'.
12186정성태3/12/20209274오류 유형: 604. The SysVol Permissions for one or more GPOs on this domain controller and not in sync with the permissions for the GPOs on the Baseline domain controller.
12185정성태3/11/20209909오류 유형: 603. The browser service was unable to retrieve a list of servers from the browser master...
12184정성태3/11/202011384오류 유형: 602. Automatic certificate enrollment for local system failed (0x800706ba) The RPC server is unavailable. [3]
12183정성태3/11/20209715오류 유형: 601. Warning: DsGetDcName returned information for \\[...], when we were trying to reach [...].
12182정성태3/11/202010961.NET Framework: 901. C# Windows Forms - Vista/7 이후의 Progress Bar 업데이트가 느린 문제파일 다운로드1
12181정성태3/11/202011829기타: 76. 재현 가능한 최소한의 예제 프로젝트란? - 두 번째 예제파일 다운로드1
12180정성태3/10/20208416오류 유형: 600. "Docker Desktop for Windows" - EXPOSE 포트가 LISTENING 되지 않는 문제
12179정성태3/10/202019781개발 환경 구성: 481. docker - PostgreSQL 컨테이너 실행
12178정성태3/10/202011220개발 환경 구성: 480. Linux 운영체제의 docker를 위한 tcp 바인딩 추가 [1]
12177정성태3/9/202010909개발 환경 구성: 479. docker - MySQL 컨테이너 실행
12176정성태3/9/202010323개발 환경 구성: 478. 파일의 (sha256 등의) 해시 값(checksum) 확인하는 방법
12175정성태3/8/202010409개발 환경 구성: 477. "Docker Desktop for Windows"의 "Linux Container" 모드를 위한 tcp 바인딩 추가
12174정성태3/7/20209959개발 환경 구성: 476. DockerDesktopVM의 파일 시스템 접근 [3]
12173정성태3/7/202010979개발 환경 구성: 475. docker - SQL Server 2019 컨테이너 실행 [1]
12172정성태3/7/202015818개발 환경 구성: 474. docker - container에서 root 권한 명령어 실행(sudo)
12171정성태3/6/202010768VS.NET IDE: 143. Visual Studio - ASP.NET Core Web Application의 "Enable Docker Support" 옵션으로 달라지는 점 [1]
12170정성태3/6/20209416오류 유형: 599. "Docker Desktop is switching..." 메시지와 DockerDesktopVM CPU 소비 현상
12169정성태3/5/202011454개발 환경 구성: 473. Windows nanoserver에 대한 docker pull의 태그 사용 [1]
12168정성태3/5/202012114개발 환경 구성: 472. 윈도우 환경에서의 dockerd.exe("Docker Engine" 서비스)가 Linux의 것과 다른 점
... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...