Visual Studio IDE may crash without any error message
While launching Visual Studio 2012/2010 IDE, Visual Studio IDE may crash without any error message. I launched the devenv.exe in the debugger and took a crash dump. You can also run the following command to capture a crash dump: cscript adplus.vbs -crash –sc "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"
After debugging I found the below Call Stack and the exception:
0:000> kL
ChildEBP RetAddr
00ebe444 73c390bf KERNELBASE!RaiseException+0x6c
00ebe4e8 73d70a4c clr!RaiseTheExceptionInternalOnly+0x276
00ebe500 73d70c7d clr!RaiseTheException+0x86
00ebe528 73d70cad clr!RealCOMPlusThrowWorker+0x72
(Inline) -------- clr!RealCOMPlusThrow+0x23
00ebe55c 73cefae6 clr!RealCOMPlusThrow+0x2f
00ebea44 73b63fbe clr!MethodTable::DoRunClassInitThrowing+0x382
00ebeacc 73b64022 clr!JIT_GetSharedNonGCStaticBase_Helper+0x85
00ebeb14 06c82520 clr!JIT_GetSharedNonGCStaticBase_Portable+0x2f
00ebeb14 06c82520 WindowsBase!MS.Win32.HwndSubclass.HookWindowProc(IntPtr, WndProc, IntPtr)+0x50
00ebeb24 06c82292 WindowsBase!MS.Win32.HwndSubclass.HookWindowProc(IntPtr, WndProc, IntPtr)+0x50
00ebeb64 0347a24d WindowsBase!MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)+0x5a
00ebeb98 750377d8 CLRStub[StubLinkStub]@9f897f120347a24d
00ebebc4 750378cb user32!InternalCallWinProc+0x23
00ebec40 75037b6f user32!UserCallWinProcCheckWow+0x100
00ebeca4 7503e4e0 user32!DispatchClientMessage+0x15d
00ebecdc 77942c92 user32!__fnINOUTLPPOINT5+0x2e
00ebecf0 0160f320 ntdll!KiUserCallbackDispatcher+0x2e
0:000> !pe
Exception object: 04041f58
Exception type: System.TypeInitializationException
Message: The type initializer for 'MS.Win32.ManagedWndProcTracker' threw an exception.
InnerException: System.BadImageFormatException, Use !PrintException 04040794 to see more.
StackTrace (generated):
SP IP Function
00EBEAEC 06C82964 WindowsBase!MS.Win32.ManagedWndProcTracker.TrackHwndSubclass(MS.Win32.HwndSubclass, IntPtr)+0x2c
00EBEB1C 06C82520 WindowsBase!MS.Win32.HwndSubclass.HookWindowProc(IntPtr, WndProc, IntPtr)+0x50
00EBEB34 06C82292 WindowsBase!MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)+0x5a
StackTraceString: <none>
HResult: 80131534
0:000> !PrintException 04040794
Exception object: 04040794
Exception type: System.BadImageFormatException
Message: Bad IL range.
InnerException: <none>
StackTrace (generated):
SP IP Function
00000000 00000001 WindowsBase!MS.Internal.ShutDownListener..ctor(System.Object, MS.Internal.ShutDownEvents)+0x2
00EBE3F4 06C82ACA WindowsBase!MS.Win32.ManagedWndProcTracker+ManagedWndProcTrackerShutDownListener..ctor()+0xa
00EBE3F8 06C82AA7 WindowsBase!MS.Win32.ManagedWndProcTracker..cctor()+0x9f
StackTraceString: <none>
HResult: 8007000b
0:000> .frame06
06 00ebea44 73b63fbe clr!MethodTable::DoRunClassInitThrowing+0x382
0:000> dv /v /t
@esi class MethodTable * this = 0x06c9544c
00ebe590 class GCCoop __gcHolder = class GCCoop
00ebe5f8 class AppDomain * pDomain = 0x01079850
00ebe5dc class Thread * pThread = 0x010be9f8
@edi class ListLock * _pLock = 0x061dd010
00ebe600 class Wrapper<ListLock *,&ListLock::HolderEnter,&ListLock::HolderLeave,0,&CompareDefault<ListLock *>,2,1> pInitLock = class Wrapper<ListLock *,&ListLock::HolderEnter,&ListLock::HolderLeave,0,&CompareDefault<ListLock *>,2,1>
<unavailable> struct MethodTable::DoRunClassInitThrowing::__l18::_gc gc = <value unavailable>
<unavailable> class ListLockEntry * pEntry = <value unavailable>
<unavailable> class FrameWithCookie<GCFrame> __gcframe = <value unavailable>
<unavailable> unsigned long hOrigInitException = <value unavailable>
<unavailable> class InlineSString<1024> _ssclsname_w_ = <value unavailable>
<unavailable> wchar_t * wszName = <value unavailable>
00ebe5d8 unsigned long hNewInitException = 0x6c82938
<unavailable> class CLRException::HandlerState __state = <value unavailable>
<unavailable> class CAutoTryCleanup<CLRException::HandlerState> __autoCleanupTry = <value unavailable>
00ebe59c class Exception * __pExceptionRaw = 0x73b6c86f
<unavailable> class CLRLastThrownObjectException __defaultException = <value unavailable>
<unavailable> class ExceptionHolderTemplate<Exception> __pException = <value unavailable>
<unavailable> class ListLockEntry::LockHolder pLock = <value unavailable>
<unavailable> class ReleaseHolder<ListLockEntry> pEntry = <value unavailable>
<unavailable> struct MethodTable::DoRunClassInitThrowing::__l80::_gc gc = <value unavailable>
00ebe574 class FrameWithCookie<GCFrame> __gcframe = class FrameWithCookie<GCFrame>
<unavailable> class InlineSString<1024> _ssclsname_w_ = <value unavailable>
@ebx wchar_t * wszName = 0x00ebe628 "MS.Win32.ManagedWndProcTracker"
<unavailable> class CLRException::HandlerState __state = <value unavailable>
<unavailable> class CAutoTryCleanup<CLRException::HandlerState> __autoCleanupTry = <value unavailable>
00ebe598 class Exception * __pExceptionRaw = 0x00ebe920
<unavailable> class CLRLastThrownObjectException __defaultException = <value unavailable>
<unavailable> class ExceptionHolderTemplate<Exception> __pException = <value unavailable>
0:000> !dumpmt 0x06c9544c
EEClass: 06c48194
Module: 03473d48
Name: MS.Win32.ManagedWndProcTracker
mdToken: 020002a2
File: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
BaseSize: 0xc
ComponentSize: 0x0
Slots in VTable: 11
Number of IFaces in IFaceMap: 0
I saved the module WindowsBase.dll locally by running the below command:
0:000> !savemodule 06da0000 C:\WindowsBase.dll
From the Visual Studio command prompt, I ran the following command to validate the MSIL and metadata: C:\>peverify WindowsBase.dll
Microsoft (R) .NET Framework PE Verifier. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
[MD]: Error: Method has invalid local signature token (0x01af0039). [token:0x06000AFC]
1 Error(s) Verifying C:\WindowsBase.dll
Hence, I copied the file WindowsBase.dll from an another working system and launched Visual Studio IDE successfully.