【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

.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:001585
用户头像

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

关注

评论

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

如何使用流程 中的 DataObject 并为流程设置租户

江南一点雨

Java springboot workflow flowable

10分钟开发Kubernetes Operator

俞凡

架构 Kubernetes 云原生

如何优雅地编写一个高逼格的JS插件?

茶无味的一天

JavaScript 前端 js JS插件

openGauss 社区 2022 年 9 月运作报告

openGauss

创新公司iLabService 释普科技启示录

B Impact

SQL抽象语法树及改写场景应用

京东科技开发者

sql SQL优化 场景应用 SQL语言 抽象语法树

易操作、可观测、可扩展,EMQX如何简化物联网应用开发

EMQ映云科技

运维 物联网 IoT emqx 10月月更

欢迎海天起点加入openGauss社区

openGauss

企业社会责任先行,公益课程推动环保科普教育

科技之家

独家巨献!阿里技术专家兼Github贡献者,整理的Spring Security入门到成神

Geek_0c76c3

Java 数据库 开源 程序员 开发

算法统治者!打破传统方式,即将爆火的Leetcode刷题指南

Geek_0c76c3

Java 数据库 开源 程序员 开发

defi质押挖矿存币生息理财系统开发

开发微hkkf5566

啃完这些Spring知识点,我竟吊打了阿里面试官(附面经+笔记)

Geek_0c76c3

Java 数据库 开源 面试 开发

旺链科技入选2022“科创中国”创新成果名单

旺链科技

区块链 金融科技 产业区块链

软件测试 | 测试开发 | Java or Python?测试开发工程师如何选择合适的编程语言?

测吧(北京)科技有限公司

测试

带你认识什么是“回流重绘”

华为云开发者联盟

html 前端 浏览器 企业号十月 PK 榜

openGauss 3.1.0版本正式发布 | 七个方面全面增强

openGauss

OpenHarmony有氧拳击之应用端开发

OpenHarmony开发者

OpenHarmony

携手武汉白鱀豚保护基金会,英特尔以责任为先多举推动环保公益

科技之家

Google 发布:DevOps 2022现状报告

SEAL安全

DevOps 研发效能 软件交付 软件供应链

软件测试 | 测试开发 | Google 测试总监聊如何经营成功的测试职业生涯

测吧(北京)科技有限公司

测试

“智领医疗 数创未来”活动成功举办,海量数据携手openGauss为医疗数字化创新赋能

openGauss

欢迎数造科技加入openGauss社区

openGauss

【活动报名】共建云原生开源生态 PolarDB × Curve 线下 Meetup 来袭!(杭州站)

阿里云数据库开源

数据库 阿里云 开源 polarDB

知道了web的攻击方式,还不快防起来?

CoderBin

前端 安全 10月月更

大数据ELK(十九):使用FileBeat采集Kafka日志到Elasticsearch

Lansonli

Filebeat 10月月更

你好,广州!openGauss广州用户组招募计划正式开启

openGauss

云图说丨带你了解GaussDB(for Redis)双活解决方案

华为云开发者联盟

数据库 数据资产 云数据库 企业号十月 PK 榜

32天高效突击:狂刷《Java权威面试指南(阿里版)》,offer拿到手软!

Geek_0c76c3

Java 数据库 开源 程序员 开发

干货|仅需3步完成酷炫数据可视化大屏制作!

云智慧AIOps社区

大前端 低代码 数据可视化 智慧大屏可视化 可视化大屏

说说 Spring 定时任务如何大规模企业级运用

阿里巴巴云原生

spring 阿里云 云原生

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