System.TypeLoadException while executing any .Net Framework 2.0 application
You may find any .Net 2.0 application crashes with an error message "setup.exe has encountered a problem and needs to close"
You may also find the following error message in the Application Event log: EventType clr20r3, P1 <application name>, P2 6.0.3790.1830, P3 42435be1, P4 app_web_7437ep-9, P5 0.0.0.0, P6 433b1670, P7 9, P8 a, P9 system.exception, P10 NIL.
We found that the .Net Framework 2.0 verification tool (https://cid-27e6a35d1a492af7.skydrive.live.com/self.aspx/Blog%7C_Tools/netfx%7C_setupverifier%7C_new.zip) reported the below failure as well:
[02/13/13,09:59:31] Launching process 'Netfx20TestApplication.exe' now
[02/13/13,09:59:31] Process successfully launched. Waiting 300 seconds for it to complete.
[02/13/13,09:59:53] ****ERROR**** Process 'Netfx20TestApplication.exe' exited with return code -532459699
[02/13/13,09:59:53] Section [Files - .NET Framework netfxperf.dll] - start parsing entries
[02/13/13,09:59:53] File C:\WINDOWS\system32\netfxperf.dll (version 1.1.4322.573) is installed on the system
[02/13/13,09:59:53] Section [Files - .NET Framework netfxperf.dll] - stop parsing entries
[02/13/13,09:59:53] ****ERROR**** Verification failed for product .NET Framework 2.0
We launched the sample.Net 2.0 application in debugger ( https://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx) and found the below exception and root cause of the failure:
0:000> k
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll -
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
0012d8ac 79f55b05 KERNEL32!RaiseException+0x3c
0012d90c 7a056a79 mscorwks!DllGetClassObjectInternal+0x27dad
0012d948 7a056b30 mscorwks!GetAddrOfContractShutoffFlag+0xa7d3
0012d974 7a056b41 mscorwks!GetAddrOfContractShutoffFlag+0xa88a
0012da70 79e7b29b mscorwks!GetAddrOfContractShutoffFlag+0xa89b
0012daa0 79e9c9c0 mscorwks!DllRegisterServerInternal+0xe17
0012daa4 79e9c991 mscorwks!CoUninitializeEE+0x179a4
0012daac 79e82ef6 mscorwks!CoUninitializeEE+0x17975
0012daf4 79e82eac mscorwks!DllRegisterServerInternal+0x8a72
0012db3c 79ee16d2 mscorwks!DllRegisterServerInternal+0x8a28
0012db7c 79eee5d1 mscorwks!StrongNameErrorInfo+0x403
0012db80 79eee5a5 mscorwks!StrongNameErrorInfo+0xd302
0012db90 79eee5c2 mscorwks!StrongNameErrorInfo+0xd2d6
0012dc14 7c87c34b mscorwks!StrongNameErrorInfo+0xd2f3
0012dc84 7c854f44 ntdll!RtlpNtMakeTemporaryKey+0x897f
0012dc90 7c83dbea ntdll!RtlIpv4StringToAddressExW+0x1377e
0012dcb4 79e787b7 ntdll!RtlSubAuthorityCountSid+0x413
0012dd10 79ee3707 mscorwks!LogHelp_TerminateOnAssert+0x39f
0012dd28 79e8837d mscorwks!StrongNameErrorInfo+0x2438
0012dd3c 79e86e2f mscorwks!CoUninitializeEE+0x3361
0:000> !pe
PDB symbol for mscorwks.dll not loaded
Exception object: 01258510
Exception type: System.TypeLoadException
Message: Failure has occurred while loading a type.
InnerException: <none>
StackTrace (generated):
SP IP Function
00000000 00000001 System.Environment.GetResourceFromDefault(System.String)
0012EC4C 03DB4E91 System.Reflection.TargetInvocationException..ctor(System.Exception)
00000000 00000001 System.RuntimeTypeHandle.CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandle ByRef, Boolean ByRef)
0012F418 033764AD System.Activator.CreateInstance[[System.__Canon, mscorlib]]()
0012F434 03376276 WinApp2._0.My.MyProject+ThreadSafeObjectProvider`1[[System.__Canon, mscorlib]].get_GetInstance()
0012F450 033761C1 WinApp2._0.My.MyProject.get_Application()
0012F45C 03374253 WinApp2._0.My.MyApplication.Main(System.String[])
StackTraceString: <none>
HResult: 80131522
0:000> !do 01258510
Name: System.TypeLoadException
MethodTable: 03da50a4
EEClass: 03d74f34
Size: 88(0x58) bytes
(C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
MT Field Offset Type VT Attr Value Name
00929350 40000b5 4 System.String 0 instance 00000000 _className
03366b2c 40000b6 8 ...ection.MethodBase 0 instance 00000000 _exceptionMethod
00929350 40000b7 c System.String 0 instance 00000000 _exceptionMethodString
00929350 40000b8 10 System.String 0 instance 0125627c _message
0336a1e8 40000b9 14 ...tions.IDictionary 0 instance 00000000 _data
010d1254 40000ba 18 System.Exception 0 instance 00000000 _innerException
00929350 40000bb 1c System.String 0 instance 00000000 _helpURL
00926cf0 40000bc 20 System.Object 0 instance 0125b8ec _stackTrace
00929350 40000bd 24 System.String 0 instance 00000000 _stackTraceString
00929350 40000be 28 System.String 0 instance 00000000 _remoteStackTraceString
03367e40 40000bf 34 System.Int32 0 instance 0 _remoteStackIndex
00926cf0 40000c0 2c System.Object 0 instance 00000000 _dynamicMethods
03367e40 40000c1 38 System.Int32 0 instance -2146233054 _HResult
00929350 40000c2 30 System.String 0 instance 00000000 _source
010d9930 40000c3 3c System.IntPtr 0 instance 0 _xptrs
03367e40 40000c4 40 System.Int32 0 instance -532459699 _xcode
00929350 4000397 44 System.String 0 instance 00000000 ClassName
00929350 4000398 48 System.String 0 instance 00000000 AssemblyName
00929350 4000399 4c System.String 0 instance 00000000 MessageArg
03367e40 400039a 50 System.Int32 0 instance 0 ResourceId
0:000> !do 0125627c
Name: System.String
MethodTable: 00929350
EEClass: 00a4184c
Size: 102(0x66) bytes
(C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
String: Failure has occurred while loading a type.
Fields:
MT Field Offset Type VT Attr Value Name
03367e40 4000096 4 System.Int32 0 instance 43 m_arrayLength
03367e40 4000097 8 System.Int32 0 instance 42 m_stringLength
010d0010 4000098 c System.Char 0 instance 46 m_firstChar
00929350 4000099 10 System.String 0 shared static Empty
>> Domain:Value 0014cd90:01251374 <<
010d6fc8 400009a 14 System.Char[] 0 shared static WhitespaceChars
>> Domain:Value 0014cd90:01251388 <<
0:000> lmvm mscorlib
start end module name
790c0000 79500000 mscorlib (deferred)
Image path: C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll
Image name: mscorlib.dll
Has CLR image header, track-debug-data flag not set
Timestamp: Tue Oct 23 23:30:35 2007 (471EBC5B)
CheckSum: 00444046
ImageSize: 00440000
File version: 2.0.50727.1433
Product version: 2.0.50727.1433
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® .NET Framework
InternalName: mscorlib.dll
OriginalFilename: mscorlib.dll
ProductVersion: 2.0.50727.1433
FileVersion: 2.0.50727.1433 (REDBITS.050727-1400)
FileDescription: Microsoft Common Language Runtime Class Library
LegalCopyright: © Microsoft Corporation. All rights reserved.
Comments: Flavor=Retail
0:000> lmvm mscorwks
start end module name
79e70000 7a3d6000 mscorwks (export symbols) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Loaded symbol image file: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Image path: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Image name: mscorwks.dll
Timestamp: Fri Apr 13 03:15:54 2007 (461F2E2A)
CheckSum: 0056BC8E
ImageSize: 00566000
File version: 2.0.50727.832
Product version: 2.0.50727.832
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® .NET Framework
InternalName: mscorwks.dll
OriginalFilename: mscorwks.dll
ProductVersion: 2.0.50727.832
FileVersion: 2.0.50727.832 (QFE.050727-8300)
FileDescription: Microsoft .NET Runtime Common Language Runtime - WorkStation
LegalCopyright: © Microsoft Corporation. All rights reserved.
Comments: Flavor=Retail
The binary mscorlib.dll version 2.0.50727.1433 was loaded from GAC where loaded mscorwks.dll version was 2.0.50727.832. So there were mismatch version of CLR binaries. Both the files should be at the same level. Hence, we renamed the existing mscorlib.dll at C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll and added the mscorlib.dll version 2.0.50727.832 to GAC from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727. Both the binaries were at the same level and we were able to run the sample .Net 2.0 application successfully. Another solution would be to install the .Net Framework 2.0 SP2 https://www.microsoft.com/en-us/download/details.aspx?id=1639 to upgrade all the core binaries.