1

I was given this WPF application, when I tried to run the program in Debug mode it would crash before getting to Windows1.xml. I later tried running in Release Mode and it would run successfully. I narrowed it down to that, I needed to turn on "Optimize Code" for it to work.

Note: Breakpoints, stepping into from debug, and stopping on throw exceptions don't work.

Edit: The exception was WPF (very popular & not helpful) generic exception:

{"Cannot create instance of 'Main' defined in assembly 'VCell2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. Error in markup file 'Window1.xaml' Line 1 Position 9."} Source="PresentationFramework" LineNumber=1 LinePosition=9

Edit: The inner - inner exception: {"The specified module could not be found. (Exception from HRESULT: 0x8007007E)":null}

Here was the stack trace I was getting:

   at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
   at System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
   at System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message, Exception innerException)
   at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail)
   at System.Windows.Markup.BamlRecordReader.GetElementAndFlags(BamlElementStartRecord bamlElementStartRecord, Object& element, ReaderFlags& flags, Type& delayCreatedType, Int16& delayCreatedTypeId)
   at System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
   at System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
   at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
   at System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
   at System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment()
   at System.Windows.Markup.TreeBuilder.Parse()
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
   at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
   at System.Windows.Application.DoStartup()
   at System.Windows.Application.<.ctor>b__0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()
   at VCell2.App.Main() in C:\Users\wandrus\Documents\Visual Studio 2008\Projects\VCell2\VCell2\obj\Debug\App.g.cs:line 0

Edit I've tried running it windbg (don't know if I'm doing this correctly)

ModLoad: 77310000 773b0000   C:\Windows\system32\ADVAPI32.dll
ModLoad: 76a30000 76adc000   C:\Windows\system32\msvcrt.dll
ModLoad: 76c60000 76c79000   C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76ae0000 76b82000   C:\Windows\system32\RPCRT4.dll
ModLoad: 770c0000 77117000   C:\Windows\system32\SHLWAPI.dll
ModLoad: 76940000 7698e000   C:\Windows\system32\GDI32.dll
ModLoad: 76c80000 76d49000   C:\Windows\system32\USER32.dll
ModLoad: 778e0000 778ea000   C:\Windows\system32\LPK.dll
ModLoad: 77120000 771bd000   C:\Windows\system32\USP10.dll
ModLoad: 76ea0000 76ebf000   C:\Windows\system32\IMM32.DLL
ModLoad: 76b90000 76c5c000   C:\Windows\system32\MSCTF.dll
ModLoad: 6c1b0000 6c1b5000   C:\Windows\system32\avgrsstx.dll
ModLoad: 57310000 578a1000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
ModLoad: 756a0000 7573b000   C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4918_none_d089094c442eb5ff\MSVCR80.dll
ModLoad: 75c40000 76886000   C:\Windows\system32\shell32.dll
ModLoad: 773c0000 7751b000   C:\Windows\system32\ole32.dll
ModLoad: 75810000 7581b000   C:\Windows\system32\profapi.dll
ModLoad: 53de0000 548d8000   C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\70603943245265de9397091048337dda\mscorlib.ni.dll
ModLoad: 757a0000 757ac000   C:\Windows\system32\CRYPTBASE.dll
ModLoad: 744f0000 74530000   C:\Windows\system32\uxtheme.dll
ModLoad: 52ea0000 53639000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System\ade9214f5bce88462742bce1278864c0\System.ni.dll
ModLoad: 57ae0000 57e0c000   C:\Windows\assembly\NativeImages_v2.0.50727_32\WindowsBase\c7663f3a74fb6aa480c60108634d285a\WindowsBase.ni.dll
ModLoad: 03eb0000 04a5b000   C:\Windows\assembly\NativeImages_v2.0.50727_32\PresentationCore\c79b7f336e6099b8c94081f975e9411e\PresentationCore.ni.dll
ModLoad: 55240000 55fec000   C:\Windows\assembly\NativeImages_v2.0.50727_32\PresentationFramewo#\7d80b7d912fbf0f7532f1b9adc235646\PresentationFramework.ni.dll
ModLoad: 00e50000 01255000   PresentationCore.dll
ModLoad: 00e50000 01255000   PresentationCore.dll
ModLoad: 539d0000 53b7c000   C:\Windows\Microsoft.NET\Framework\v3.0\WPF\wpfgfx_v0300.dll
ModLoad: 76990000 76a1f000   C:\Windows\system32\OLEAUT32.dll
ModLoad: 51520000 51754000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Core\e78709bedd31f237055667ad99b9451f\System.Core.ni.dll
ModLoad: 6cbc0000 6cc1b000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll
ModLoad: 637d0000 638c1000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Configuration\9c2727d244dcc72fbefcf1ae22660f35\System.Configuration.ni.dll
ModLoad: 57f20000 58456000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\93d38ea87365928456313035f8091126\System.Xml.ni.dll
ModLoad: 74130000 74143000   C:\Windows\system32\dwmapi.dll
ModLoad: 60340000 60348000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\culture.dll
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (!!! second chance !!!)
eax=0025e034 ebx=e0434f4d ecx=00000001 edx=00000000 esi=0025e0bc edi=002d66d8
eip=75acb4f4 esp=0025e034 ebp=0025e084 iopl=0         nv up ei pl nz ac po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000212
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\KERNELBASE.dll - 
KERNELBASE!RaiseException+0x54:
75acb4f4 c9              leave
erbridge
  • 1,376
  • 12
  • 27
avgbody
  • 1,382
  • 3
  • 15
  • 31
  • I'd guess some of your markup is broken. – Anon. Jan 15 '10 at 00:09
  • You only pasted the stack trace. Paste the entire exception. Paste the results of `ex.ToString()`. – John Saunders Jan 15 '10 at 00:13
  • 1
    Your code is broken. I don't know how, but if changing from Debug to Release 'fixes' it there's something wrong with the code. OK. there's a very small chance there's something wrong with the compiler or run-time system, but the chance that there's something wrong with your code is much larger. – High Performance Mark Jan 15 '10 at 00:13
  • I asked you to post `ex.ToString()` for a reason, and I really wish you'd do that. It will show any Inner exception instances. – John Saunders Jan 15 '10 at 00:17
  • @Mark - Turning on optimization will cause certain unused code to get stripped out and thus not JIT'd. I remember reading an article on MSDN showing how to actually take advantage of this feature which seemed like a bad idea to me but anyway that's one possible explanation for why optimization would make it go away. – Josh Jan 15 '10 at 00:18
  • @John Saunders I can't put the exception to a string since the program crashes before hitting any breakpoints. All I could do is grab the exception message and stack trace – avgbody Jan 15 '10 at 00:22
  • Open app.g.cs (it's in the obj directory) and put a try-catch around the contents of Main(). In the catch clause, dump the exception.ToString() to a message box or whatever. You don't want to have custom edits in app.g.cs long term, because VS may regenerate it, but as a quick fix to get info about that startup exception, it should help us out. – itowlson Jan 15 '10 at 00:59
  • I've tried that, it doesn't hit those either – avgbody Jan 15 '10 at 01:03
  • windbg isn't the ideal choice for debugging .NET programs. Try using cordbg. cordbg understands .NET assemblies and exceptions and can display .NET exception details (like which module isn't being found). Start your program paused and step through until you get the exception (I think the step command in cordbg is `cont` but I could be wrong -- check the help!). – itowlson Jan 15 '10 at 19:28

1 Answers1

2

You need to provide more information. What is the exception? It could be that a type is being referenced at runtime that can't be resolved. If the code isn't being used, the optimizer might just omit it from JIT whereas in debug mode it could be triggering a type load exception. Who knows though. Without more info it'd be impossible to tell.

edit in response to the update in your question, it seems like there's a type called Main that is throwing an exception in its instance constructor or static constructor. It could also be a field initializer that's triggering this. If you can catch the exception, check its InnerException which TargetInvocationExceptions usually contain. This will give you more info.

edit you've indicated that the inner exception is an assembly loading problem which is what i figured initially. so you're missing a reference somewhere. in particular, you are probably referencing a DLL that in turn references another DLL that cannot be located. You'll need to figure out which assembly can't be resolved. You can use the fuslogvw.exe tool to view assembly binding errors.

Josh
  • 68,005
  • 14
  • 144
  • 156
  • The weird thing is that it crashes opening up the App.g.cs which is the beginning of the whole program. I've tried deleting everything, cleaning and rebuilding. It's just weird. – avgbody Jan 15 '10 at 00:33
  • 2
    Well, click Debug -> Exceptions. Then next to Common Language Runtime put a check in the box under Thrown. This will let Visual Studio break at the spot where the exception is thrown which is hopefully in your source code instead of letting WPF catch and rethrow it. – Josh Jan 15 '10 at 00:59
  • Done with same results. I'm starting to think its a dll problem maybe with the Presentation Framework. – avgbody Jan 15 '10 at 01:08
  • Well then you're going to have to step through the code line by line until you hit the line that causes the problem. I'm guessing it's happening in a field initializer somewhere. – Josh Jan 15 '10 at 01:13
  • Nothing comes up when I have the tool open, but thanks for the help. I might try some of the other tools in the Windows SDK and see if it gives any additional info. – avgbody Jan 15 '10 at 16:16
  • I'm assuming it had to be a missing assembly. I had to install NI-DAQmx CDs onto my system; which, I'm assuming must of added some additional modules & assembly information that is not needed in Visual Studio until runtime. – avgbody Jan 18 '10 at 20:37