Articles of clr

.Net 4.0 Windows应用程序在Windows Server 2008下的clr.dll中崩溃

我有一个Windows应用程序计划每天运行,并间歇性地失败,由于下面的日志在EventViewer。 Faulting application name: MyApplication.exe, version: 1.0.0.0, time stamp: 0x4d54829a Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba21eeb Exception code: 0xc0000005 Fault offset: 0x00000000000029e1 Faulting process id: 0xbb1c Faulting application start time: 0x01cbd99223d8b4eb Faulting application path: E:\MyApplication\MyApplication.exe Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Report Id: 7e74ec7e-45a5-11e0-a95d-003048de380d 并在第二个EventViewer日志中说: The process was terminated due to an internal error […]

LNK2022元数据操作:重复types中的布局信息不一致

我正在使用的项目中遇到了新的链接器错误: 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200004e). 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000075). 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000091). […]

用静态存储持续时间破坏本地对象

2012-12-09总结: 在普通混合模式应用程序中,全局本地C ++析构函数作为终结器运行。 无法更改该行为或关联的超时。 混合模式程序集DLL在DLL加载/卸载期间运行C ++构造函数/析构函数 – 与原生DLL完全一样。 使用COM接口将CLR托pipe在本地可执行文件中,可以使解构器在本地DLL(我期望的行为)中运行,并为终结器设置超时(额外奖励)。 据我可以告诉上面适用于至lessVisual Studio 2008,2010和2012.(只testing与.NET 4) 我打算使用的实际CLR托pipe可执行文件与此问题中列出的可执行文件非常相似,只是进行了一些小的更改: 按照Hans Passant的build议,将OPR_FinalizerRun设置为某个值(目前为60秒,但可能会更改)。 使用ATL COM智能指针类(这些在Visual Studio的高级版本中是不可用的,所以我在这篇文章中省略了它们)。 Lodaing从mscoree.dlldynamicCLRCreateInstance (以便在安装兼容CLR时允许更好的错误消息)。 将命令行从主机传递到程序集DLL中指定的Main函数。 感谢所有花时间阅读问题和/或评论的人。 2012-12-02更新在post底部。 我正在使用Visual Studio 2012与.NET 4混合模式C ++ / CLI应用程序,惊奇地发现一些本地全局对象的析构函数没有被调用。 调查这个问题,事实certificate,他们的行为像本文所解释的托pipe对象。 我对这种行为感到非常惊讶(我理解它是用于pipe理对象的),无论是在C ++ / CLI标准还是在析构函数和终结器的描述中,都找不到任何地方。 在Hans Passant的评论中,我把这些程序编译成一个程序集DLL,并把它存放在一个小的本地可执行文件中,它给了我所期望的行为(析构函数有足够的时间在同一个线程中完成并运行build)! 我的问题: 我可以在独立的可执行文件中获得相同的行为吗? 如果(1)不可行,是否可以configuration进程超时策略(即基本上调用ICLRPolicyManager->SetTimeout(OPR_ProcessExit, INFINITE) )为可执行文件? 这将是一个可接受的解决方法。 这是在哪里logging/我怎样才能更多地教育自己的话题? 我宁愿不依赖于可能改变的行为。 重新编译下面的文件如下: cl /EHa /MDd CLRHost.cpp cl /EHa /MDd /c […]

.NET运行时(CLR),JIT编译器位于何处?

这个问题可能看起来有点愚蠢或奇怪,但我已经听说了很多关于.NET CLR,JIT编译器以及它是如何工作的等等等等……但现在我想知道它究竟在哪里或托pipe。 是吗 – 当我们实际安装.NET框架时,作为Windows操作系统的一部分托pipe? 要么 它是我们可以在任务pipe理器中看到的一些.exe的一部分 我正在寻找关于这个的详细的答案。 有人可能将这个问题作为“如何Windows操作系统在.NET运行时触发/执行.NET可执行文件?

你如何保护自己免受内存消耗失控打破个人电脑?

我不时地发现自己正在做一些适度的愚蠢的事情,导致我的程序分配了所有可以得到的内存,然后分配一些内存。 这种事情导致程序很快就会因为“内存不足”的错误而死亡,但是现在Windows将不再使用这种不存在的内存给应用程序,事实上显然已经准备好了这样做自杀。 当然不是,但是它将会使可用的物理RAM非常匮乏,即使运行任务pipe理器也需要半个小时的交换时间(所有失控的应用程序仍然在分配越来越多的内存)。 这不是经常发生,但是当它发生时是灾难性的。 我通常不得不重置我的机器,导致数据不时丢失,一般很多不便。 你有什么实际的build议,使这种错误的后果不那么可怕吗? 也许一些registry调整来限制一个应用程序被允许分配的最大数量的虚拟内存? 还是一些CLR的标志,将限制这只适用于当前的应用程序? (这通常是在.NET中,我自己这样做。) ( “不要耗尽内存”和“购买更多的内存”是没有用的 – 前者我无法控制,后者我已经完成了。)

净运行时间错误:.NET运行时2.0错误 – 事件ID:1000崩溃我的程序。 是什么造成的?

我有一个新的程序,已经运行了24个星期超过2个星期了,但昨天晚上它崩溃/没有致命的日志exception,在我的log4net文件…这个过程似乎已经被杀了….当我查看Windows事件查看器应用程序日志时,它包含程序进程错误,说'.NET运行时2.0错误'types:错误EventID:1000。 这似乎是.Net运行时失败/错误,并没有任何关系与我的代码。 有谁知道是什么原因造成的? 是否有.Net运行时修复? /我在Window Server 2003虚拟机片上运行.Net 3.5。 提前致谢。 编辑: 以下完整的事件描述。 有几个小时没有任何事件,有信息级别不是这样的错误。 来源:.NET运行时2.0错误types:错误事件ID:1000 事件日志描述:错误应用程序CompanyName.AppName.exe,版本0.0.0.0,邮票4ca5d33d,错误模块mscorwks.dll,版本2.0.50727.3607,邮票4add5446,debugging? 0,故障地址0x0010724e。 有关更多信息,请参阅http://go.microsoft.com/fwlink/events.asp上的帮助和支持中心。