This error is driving me crazy. I have this app made with c# and It was working fine a few days ago, but ever since I installed the .net native preview it starts as a background process and works until it gets to:
MainWindow mainWindow = new MainWindow(); that's when it stops executing code.. after a few seconds it vanishes from task manager and writes this to the event log:
Faulting application name: CryptoLight.exe, version: 126.96.36.199, time stamp: 0x54233e4c
Faulting module name: KERNELBASE.dll, version: 6.3.9600.17055, time stamp: 0x532943a3
Exception code: 0xe0434352
Fault offset: 0x00011d4d
Faulting process ID: 0xce8
Faulting application start time: 0x01cfd8428be7903d
Faulting application path: C:\Users\<Name>\Documents\Visual Studio 2013\Projects\CompleteCryptography\CompleteCryptography\bin\Release\CryptoLight.exe
Faulting module path: C:\WINDOWS\SYSTEM32\KERNELBASE.dll
Report ID: cf371a9b-4435-11e4-bef6-6894233c343e
Faulting package full name:
Faulting package-relative application ID:
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.OutOfMemoryException
at System.Windows.Application.LoadComponent(System.Object, System.Uri)
at CryptoLight.App.App_Startup(System.Object, System.Windows.StartupEventArgs)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
earlier today (the first time I experienced this problem) I got a
Fatal CLR Error: 80004005 upon starting the application, I think I've fixed it by removing duplicate .net installations but this problem started right after that..
EDIT: after some more debugging I have finally found the line of code that causes this error:
MainWindow(). why is
InitializeComponent(); causing a
OutOfMemoryException, I get this exception when my app is only using 45 - 50 mb and I have around 3 gb ram free out of 4 gb on a 64bit pc
I'm sorry, but I can give you just a hint, nothing complete.. I'm writing it as an answer ,because it's quite long and won't fit in comments. But still may help..
fact: except for some rare cases, many .Net versions can coexist on a single system. If installing a new version of the framework breaks your app - that may mean that your app was "opened for updates" and it picked the newest framework instead of sticking to the one it was built for.
hint #1: you can create a "manifest" file (i.e. app.exe.manifest) and inside you can state which framework versions are allowed to be used. So, i.e. on a system with Net4 you can force an app to run on Net2.0 level. I can't provide you with the syntax.. but it's easy to find on the internet.
hint #2: in case of very dark cases, you can enable pre-startup logging. .Net uses "Fusion engine" for determining which framework DLLs should be used, and this engine is fired off before the application actually runs. Fusion checks what you have in the system, checks app's requirements (i.e. manifest) and tries to bind everything together. You can turn on "fusion logging", then run the app, then turn logging off and check the logs to learn what exactly DLLs were selected for your assembly. Helpful if wrong ones are picked and you don't know why. Just don't forget to turn the logging off, as it slows down the startup of all .Net applications :)
Did you install Visual Studio for .NET Native Preview? I think it comes with latest CLR. It is possible that we accidentally introduced a regression in that CLR. Please file a bug on Microsoft Connect and send me a link to it (email@example.com).
Please provide your clr.dll version in your bug report:
filever /v %WINDIR%\Microsoft.NET\Framework\v4.0.30319\clr.dll (grab the FileVersion string)
Also please add to the bug a dump from your application crash (attach VS as native debugger).
-Karel Zikmund (developer on CLR /.NET Native reliability team)
User contributions licensed under CC BY-SA 3.0