写点什么

.NET 4.6 的 RyuJIT 编译器中又发现两个严重的 Bug

  • 2015-08-09
  • 本文字数:937 字

    阅读完需:约 3 分钟

在.NET 4.6 的 RyuJIT 编译器中又发现了两个严重的 bug,开发者 Andrey Akinshin 已经将第一个 bug 记录下来,并提供了以C#编写的概念验证式代码以解释其中的问题。而正是StackOverflow 上的一名用户“BrandonAGr”在网站上的留言启发Akinshin 编写了这段代码。

Akinshin 在示例中使用了可空的布尔类型,它展示了当 RyuJIT 在试图生成优化代码时导致所生成的程序集出错的情况。从这个示例的运行结果来看,它在首次运行时会产生错误,而第二次运行时却一切正常,这一点更令人头疼。Akinshin 在总结中说道:“RyuJIT 似乎存在着一个相当棘手的优化 bug,这个 bug 的产生依赖于大量的附加条件,而对于源代码的每次修改都会破坏它的可重现性。”

所幸来自微软的开发者“schellap”已经为这一错误提交了一个修复,但就像本周早先所报告的问题一样,目前还没有发布任何二进制的补丁包。使用者对于RyuJIT 目前的现状表示了他们的挫折感与忧虑。用户“EasmoneNerbonne”认为,根据所报告的bug 情况来看,“……看起来,最好的做法是在近期全面停止使用[RyuJIT],而不仅仅是禁用尾调用功能而已。” Akinshin 对此也表示了赞同。而用户Daniel Marbach说道:“……那篇介绍RyuJIT 的博客应当更新一下这些bug 的情况,并且微软应该发布一篇公开声明,清楚地说明:不要在生产环境中使用RyuJIT。”(原文即以大写表示强调)

第二个bug 是由GitHub 用户Hyunho Richard Lee 所报告的,他通过一段F#代码的示例展现了这个bug:原本应该正常运行的程序却产生了错误(抛出FatalExecutionEngineError 异常)。按照Lee 的说法,对于能够正常运行的、以.NET 4.5.1(或4.5、4.5.2)为目标的F# 3.1 程序,在安装.NET 4.6 RC 后就会产生问题。

Lee 为 F#开发者总结了这个问题:

如果 F#开发者在现有应用的任何一处代码中,对于 KeyValuePair 类型的 Seq 执行了 Seq.distinct 方法,那么他们必须对运行环境加以控制,确保部署环境中没有安装.NET 4.6。另一种做法是立即重新设置项目的目标,随后立即重新部署这些项目。

微软的开发者 sivarv暗示这个问题已经在一个提交中得以修复,但正如上文所述,目前还没有公开宣布任何二进制补丁包的发布日期。

查看英文原文: Two More Major Bugs Revealed in .NET 4.6’s RyuJIT Compiler

2015-08-09 08:001695
用户头像

发布了 428 篇内容, 共 177.4 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

架构师系列之2:依赖倒置设计原则

桃花原记

第六周总结

fmouse

极客大学架构师训练营

架构师训练营第二周作业2

韩儿

极客大学架构师课程作业-第二周

井中人

极客大学架构师训练营

架构师训练营第二期 - 第二周作业

john_zhang

极客大学架构师训练营

前端不得不懂的架构知识(上)

执鸢者

架构 大前端

怎么样让自己的博客被谷歌和百度收录!

root

百度 SEO 博客收录 谷歌收录

Week 6 作业01

Croesus

java安全编码指南之:序列化Serialization

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

训练营第六周作业 2

仲夏

极客大学架构师训练营

架构师系列之1:UML 系统设计用例图

桃花原记

软件设计原则

猴子胖胖

软件设计原则

第六周总结

alpha

极客大学架构师训练营

架构师训练营 - 作业 - 第六周

Max2012

2.8 第二周课后练习

lithium

极客时间 架构师训练

第二周学习总结

lithium

极客大学 架构师训练

架构师训练营 - 第六周总结

一个节点

极客大学架构师训练营

架构师训练营第二周作业1

韩儿

第二周设计原则

Geek_9527

架构作业 -- CAP原理

Nick~毓

训练营第六周作业 1

仲夏

极客大学架构师训练营

架构师训练营第 1 期 - 第 6 周课后练习

Anyou Liu

极客大学架构师训练营

【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??

冰河

MySQL 分布式事务 一致性 XA

第六周作业

fmouse

极客大学架构师训练营

LeetCode题解:78. 子集,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

盘点 Mac 上好用的七款软件

彭宏豪95

效率 效率工具 软件 Mac

Week 6 作业02

Croesus

CAP原理, Doris 临时失效的处理过程

garlic

极客大学架构师训练营

第二周作业

CraspLion

week2 框架设计 作业和学习总结

杨斌

如何抽取实体关系?——基于依存句法分析的事实三元组抽取

Guanngxu

自然语言处理

.NET 4.6的RyuJIT编译器中又发现两个严重的Bug_C#_Jeff Martin_InfoQ精选文章