我最近读到一个有趣的文章,由于内存溢出错误,波音的动力系统将崩溃,并将飞行变成一个飞行砖块。
这是一个低级内存处理错误。如果使用像Rust这样的编程语言,这个bug可以消除吗?因为Rust自己处理内存,而且它与C语言这样的硬件非常接近。
发布于 2019-07-26 08:16:04
实际上,您所指的生成器控制单元中的错误并不是Rust (或任何具有固定大小整数的语言)可以保护的内存处理错误。该单元的内部计数器溢出,这将最终发生在任何固定大小的计数器,以跟踪时间为例,和程序安全特征的单位检测,并将其归类为异常行为。由于异常行为被认为是不好的,该单位被置于“故障安全”模式。没有迹象表明该错误涉及无效的内存访问。
因此,从C/C++转换到Rust并不能防止这类错误,因为在应用程序逻辑中,即使是最安全的语言最聪明的编译器也看不到这种行为可能是有问题的。
我认为锈病不会在短期内接管安全关键地区的主要原因是
发布于 2019-07-26 07:20:14
仅使用内存安全语言可以避免内存处理错误吗?简而言之,是的。它们确实有潜力消除世界基础设施中一个巨大的关键错误来源。(这些语言的编译器和运行时系统的实现仍然可能存在内存处理错误,但这些错误通常是由比一般行业程序员少得多的合格人员编写的,因此风险要小得多。)
这些语言能代替C/C++吗?简单地说,没有。事实上,市场并没有奖励安全性:软件商店通常不对程序错误造成的损害负责,消费者不会接受更高的价格以获得更好的软件质量,太多的私人和公共机构都对容易被黑客攻击的系统感兴趣。此外,程序员喜欢内存-不安全的语言给他们的原始力量。因此,在可预见的未来,我们将被未定义的行为和由此产生的漏洞所困扰,即使现在我们能够承担内存管理系统所涉及的额外成本。
https://softwareengineering.stackexchange.com/questions/395230
复制相似问题