Visual studio 2015 VS2015与“碰撞”;新的保护页……”;在编辑源代码时
问题: Visual Studio 2015因以下错误而不断崩溃: 无法为堆栈创建新的保护页 背景: 在其他上下文中已经有一些关于此错误的问题,但它们似乎都与Visual Studio中的遗留COM代码或设计器工具的互操作有关。我只是想编辑一个C#源文件 以前,我只在使用代码契约XML文档工具Visual studio 2015 VS2015与“碰撞”;新的保护页……”;在编辑源代码时,visual-studio-2015,roslyn,code-contracts,Visual Studio 2015,Roslyn,Code Contracts,问题: Visual Studio 2015因以下错误而不断崩溃: 无法为堆栈创建新的保护页 背景: 在其他上下文中已经有一些关于此错误的问题,但它们似乎都与Visual Studio中的遗留COM代码或设计器工具的互操作有关。我只是想编辑一个C#源文件 以前,我只在使用代码契约XML文档工具ccdocgen.exe时见过这个错误。当我将VS2013与ccdocgen一起使用时,在构建时偶尔会出现错误,但它只会使ccdocgen崩溃,而不是VS。升级到VS2015后,如果我使用ccdocge
ccdocgen.exe
时见过这个错误。当我将VS2013与ccdocgen一起使用时,在构建时偶尔会出现错误,但它只会使ccdocgen崩溃,而不是VS。升级到VS2015后,如果我使用ccdocgen构建任何使用匿名方法的东西时,我经常看到它,但直到现在,它仍然只是使ccdocgen崩溃,而不是VS。同样值得指出的是,当ccdocgen在构建时抛出错误时,错误对话框看起来略有不同
上下文:
我目前正在研究的解决方案使用代码契约作为前置条件和后置条件,但根本不使用静态检查器。我在编辑代码时遇到了这个错误,只是做了一些简单的事情,比如键入、选择文本、使用Ctrl+C
或Ctrl+X
。从那以后,我已经禁用了我目前正在处理的项目中的所有代码契约工具(但不是在整个解决方案中),但是错误仍然偶尔出现
根据对有关此错误消息的其他问题的回答,它是由某个地方的堆栈溢出引起的。由于这个错误是在编辑文本时发生的,而我在迁移到VS2015后才遇到它,所以我的假设是它与Roslyn正在进行的一些背景解析有关
一些代码:Edit:我发现这个属性的两个版本都被注释掉了,所以不是这样
这就是我认为引起问题的成员:
public DataView JoinedRecords =>
(from r1 in Table1.AsEnumerable()
join r2 in Table2.AsEnumerable()
on r1.Field<int>("ID") equals r2.Field<int>("ID")
where r2.Field<bool>("IsPending")
select r1)
.CopyToDataTable().AsDataView();
编辑2:更多详细信息 错误对话框: 我还注意到,当错误对话框弹出时,但在我单击“确定”之前,许多VisualStudio进程在任务管理器中看起来仍然正常
devenv
、PerfWatson
、VsHub
和Microsoft.VsHub.Server.HttpHost
都仍在运行,并且工作集、句柄和线程统计数据都在波动VBCSCompiler
和MSBuild
仍在运行,但没有波动(不运行生成时通常会出现这种情况)
编辑:
VS2015更新1和升级到更新3后都出现问题
问题在于代码合同v1.9,尝试卸载并重新安装CC 1.9,但没有效果
可能的修复方法?
安装了CC v1.10-RC2,我已经工作了几分钟,没有VS崩溃
将在以下任一情况下进行后续跟进:
- 更多的车祸发生,或者更好
- 我一整天的工作都没有撞车
我将通知代码合同团队,看看他们的分析是什么 我也有同样的问题。我处理了递归调用。错误消失了。 因此,我建议您在任何递归函数的开头添加一些退出点。 或者试着注释递归调用, 验证这仅仅是因为递归调用导致堆栈溢出而发生的 如果不是递归调用,则可能是无限循环
祝你好运 谢谢。我经常在收到提示时向他们提交ccdocgen故障通知,因此希望那里有一些有用的日志数据。我是代码契约的维护者之一,但我看不出从v1.9到v1.10的更改如何会产生如此严重的影响。期待更多信息…嗨,谢尔盖。我仍然收到很多代码契约崩溃的消息,但这并没有摧毁VisualStudio。自从升级到VS2015以来,这些事情一直发生在我身上。我总是在收到提示时提交错误报告(只有当它没有崩溃时才会发生)。你能帮我查一下错误记录吗?
public DataView JoinedRecords =>
query = Table1.AsEnumerable()
.Join(Table2.AsEnumerable(),
r1 => r1.Field<int>("ID"),
r2 => r2.Field<int>("ID"),
(r1, r2) => r1)
.CopyToDataTable().AsDataView();
<entry>
<record>563</record>
<time>2016/06/29 16:00:08.841</time>
<type>Error</type>
<source>Extension Manager</source>
<description>Extension will not be loaded because an extension with the same ID 'Microsoft.Windows.DevelopmentKit.Desktop' is already loaded at C:\PROGRAM FILES (X86)\COMMON FILES\MICROSOFT\EXTENSIONMANAGER\EXTENSIONS\MICROSOFT\WINDOWS KITS\8.0\DESKTOP SDK\...</description>
<path>C:\PROGRAM FILES (X86)\COMMON FILES\MICROSOFT\EXTENSIONMANAGER\EXTENSIONS\MICROSOFT\WINDOWS KITS\8.1\DESKTOP SDK\</path>
</entry>
<entry>
<record>564</record>
<time>2016/06/29 16:00:09.587</time>
<type>Error</type>
<source>Color Theme Service</source>
<description>The color 'Popup' in category 'de7b1121-99a4-4708-aedf-15f40c9b332f' does not exist. </description>
</entry>