在.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

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

  1. MFC中“资源在另一个编译器中打开”报错解决方法

    我们有时候会遇见这样的问题,提示在另一个编译器中打开,这样就打不开GUI了. 解决方法 关闭这个Resource.h文件,再重新点开一下右边的资源试图就成功了.

  2. turbo c填充图形_C / C ++中的图形:Turbo C编译器中的简介和图形模式

    turbo c填充图形 In this advanced learning tutorial, you will learn more about the C/C++ feature "Gr ...

  3. C++17标准STL库并行策略在GCC编译器中的替代实现方法

    C++17标准STL库并行策略在GCC编译器中的替代实现方法 严正声明:本文系作者davidhopper原创,未经许可,不得转载.  2019年8月5日更新: GCC 9.1.0可支持C++ 17标 ...

  4. c语言子函数作用是什么意思,C语言编译器中常见的函数用法以及作用详解

    C语言的编译器中自带很多库函数,如果熟悉了,用起来操作起来都很方便,不仅能提高效率稳定性也是毋庸置疑的,毕竟都是世界级的大师写出来的.今天就来谈一谈,C语言自带的函数内存操作处理这一块 主要有:mem ...

  5. (三)大话深度学习编译器中的自动调优·Empirical Search

    前面的第一篇"(一)大话深度学习编译器中的自动调优·前言"与第二篇"(二)大话深度学习编译器中的自动调优·DSL与IR"分别介绍了背景与一些相关概念,这第三篇我 ...

  6. 如何在编译器中快速选中一行文字?

    最近使用VS2015,发现每次用鼠标选中一行文字很是头疼. 通过Ctrl+A的快捷键可以选中编译器中所有的文字,那么有没有什么办法可以快速选中一行文字呢? 在绝大多数编译器中,快速选中一行的方法如下: ...

  7. 关于GCC/LLVM编译器中的sanitize选项用处用法详解

    关于GCC/LLVM编译器中的sanitize选项用处用法详解 ​ 编译器中sanitize选项原本来自google的开源C/C+ +工具集sanitizers项目, 包括了AddressSaniti ...

  8. Vmware 虚拟机虚拟网络编译器中无法勾选连接适配器或者在自己主机中没有vmnet1和vmnet8

    1.自己主机网络中没有vmnet8或1 那是因为没有在VMware虚拟网络编译器中配置好主机连接. 勾选上图所示应用安装即可. 2.上个问题中如果勾选失败或者勾选后会自动消失解决如下 1.首先确认自己 ...

  9. php获取富文本编译器中的所有图片

    /*** 获取富文本编译器中的所有图片* @param string $contentStr* @return array*/ function getPatternMatchImages($cont ...

最新文章

  1. 再谈PowerPoint 2010导出幻灯片为图片
  2. 修改centos7容器的时间和宿主机时间一致
  3. 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
  4. FreeTextBox使用详解(FTBv3-1-6)
  5. springboot 基于Vue旅游景区商城网站java项目源码
  6. uni-app项目中使用scss语法
  7. 浅谈微信公众号,微信开放平台和微信商户号的区别
  8. Python编写时钟表turtle
  9. 谷歌浏览器与电脑时间不同步
  10. 彻底卸载Xubuntu Kubuntu
  11. 魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机
  12. C语言程序设计教程(第三版)课后习题6.1
  13. 计算机专业BA和BS有啥区别,美国读大学选专业BA和BS有什么区别?
  14. Activiti7工作流引擎:进阶篇(十) 多实例
  15. ARM之S5pv210的按键和中断部分
  16. Visio中如何做出弧度的文字
  17. 基于stm32f103rct6(秉火mini板)的rc522RFID读卡例程
  18. 10 款你不知道的 Linux 环境下的替代工具
  19. iOS 9 App Search教程
  20. PMP考试关键词(二)

热门文章

  1. 15.PHP_PHP与Ajax
  2. Intel汇编语言程序设计学习-第三章 汇编语言基础-下
  3. hdu5015 矩阵快速幂233(好题)
  4. hdu 4891 模拟
  5. 【开发环境】为 Visual Studio Community 2013 版本安装中文语言包 ( 安装 Test Agents 2013 | 安装 Visual Studio 2013 简体中文 )
  6. 【Android 组件化】路由组件 ( 使用 JavaPoet 生成路由表类 )
  7. 【数字信号处理】数字信号处理简介 ( DSP 定义 | DSP 知识领域 | A/D 转换 )
  8. 怎么寻回执行页内操作时的错误磁盘的数据
  9. 单例模式(winform唯一页面)
  10. windows下pycharm远程调试pyspark