OpenZFS中一个险些造成灾难的Bug:类型安全的重要性
2025-07-11
一个OpenZFS的底层磁盘分配函数中存在一个隐蔽且严重的bug,它会导致数据被悄无声息地覆盖。这个bug源于一个简单的类型错误,将计算得到的`psize`错误地返回为`asize`。作者花了近两天时间才追踪到这个bug。虽然这个bug在正式发布版本中不存在,但这引发了作者对C语言静态分析工具的局限性以及Rust语言类型系统的优势的思考。Rust通过自定义类型(例如`PhysicalSize`和`AllocatedSize`)可以有效避免此类错误。作者认为,与其指望程序员完美无缺,不如利用工具和语言特性来提升代码质量,降低这类难以察觉的,可能造成严重后果的bug的风险。
阅读更多
开发