博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET 4.6的RyuJIT编译器中又发现两个严重的Bug
阅读量:5879 次
发布时间:2019-06-19

本文共 1055 字,大约阅读时间需要 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这个问题已经在一个提交中得以修复,但正如上文所述,目前还没有公开宣布任何二进制补丁包的发布日期。

\\

查看英文原文:

转载地址:http://rncix.baihongyu.com/

你可能感兴趣的文章
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Maven 传递依赖冲突解决(了解)
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
[Spark][Python]Spark Join 小例子
查看>>
form表单下的button按钮会自动提交表单的问题
查看>>
springBoot介绍
查看>>
Intellij IDEA 快捷键整理
查看>>
Redis 通用操作2
查看>>
11. Spring Boot JPA 连接数据库
查看>>
洛谷P2925 [USACO08DEC]干草出售Hay For Sale
查看>>
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>
CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
C# 解决窗体闪烁
查看>>