今天我们将探讨原子性违规检查器:
这是我们在关于 Rust 项目中的并发和安全问题的 Chain-Fox 线程系列中的第四个 Rust 检查器。
微妙的并发错误可能会悄悄破坏您的系统。我们的下一个工具将它们揭示出来。
这标志着我们对 Rust 的 Chain-Fox 检查器深入研究的延续。🧵

这个检查器有什么作用
它检测由多线程 Rust 程序中的交错原子操作引起的潜在竞争条件
在没有适当同步的情况下,单独看似安全的原子操作在组合时可能会违反逻辑。
问题
当多个原子操作访问同一个变量,并且这些访问被另一个线程的原子操作交错时,可能会破坏程序的不变性。
这会导致逻辑错误,这些错误很难重现,甚至更难调试。
为什么这很重要
这些错误不会使你的程序崩溃
它们会导致程序行为不正确
在区块链系统或并发应用中,这可能导致消息丢失、共识破裂或状态过时。
𝗛𝗼𝘄 𝘁𝗵𝗲 𝗰𝗵𝗲𝗰𝗸𝗲𝗿 𝘄𝗼𝗿𝗸𝘀
原子性违规检查器分析您的 Rust 代码的中级中间表示 MIR
它识别出原子操作缺乏适当同步的模式
它报告:
• 原子操作的类型
• 发生的代码位置
真实世界影响
这不仅仅是理论。这里是我们在 parity-ethereum 中发现的一个漏洞
修复网络开发中的原子性违规 by Chain-Fox · Pull Request #11277
openethereum/parity-ethereum
𝗪𝗵𝘆 𝗶𝘁 𝗶𝘀 𝗰𝗿𝘂𝗰𝗶𝗮𝗹 𝗳𝗼𝗿 𝗥𝘂𝘀𝘁 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀
• Rust 提供内存安全,但并发仍然是一个逻辑雷区
• 原子操作可能在不同线程之间静默交互
• 我们的检查器可以捕捉编译器无法检测到的问题
自信地构建正确的并发代码
到目前为止,我们已经在 Chain-Fox 套件中解释了四个 Rust 检查器
• 双锁检查器
• 冲突锁检查器
• 条件变量误用检查器
• 原子性违规检查器
更多的检查器正在开发中。我们将在即将到来的讨论中介绍下一个。
87
4,784
本页面内容由第三方提供。除非另有说明,欧易不是所引用文章的作者,也不对此类材料主张任何版权。该内容仅供参考,并不代表欧易观点,不作为任何形式的认可,也不应被视为投资建议或购买或出售数字资产的招揽。在使用生成式人工智能提供摘要或其他信息的情况下,此类人工智能生成的内容可能不准确或不一致。请阅读链接文章,了解更多详情和信息。欧易不对第三方网站上的内容负责。包含稳定币、NFTs 等在内的数字资产涉及较高程度的风险,其价值可能会产生较大波动。请根据自身财务状况,仔细考虑交易或持有数字资产是否适合您。