在 illumos ꞏ sunshowers 上调试 rustc 段错误

主要观点:

  • 在 Oxide 用 Helios 作为云电脑基础 OS,Helios 是 illumos 的分发版,作者在工作中对 illumos 的调试工具印象深刻,此次用其调试 Rust 编译器的段错误。
  • 介绍 Rust 编译器的自举过程及相关阶段,通过一系列操作找到崩溃的 rustc 版本及相关信息,包括生成核心文件、用 mdb 检查寄存器和调用栈、查看地址空间等,提出关于调用栈耗尽导致崩溃的理论。
  • 深入研究调用栈,发现 stacker 相关信息,进一步完善理论,通过在其他平台触发相同 bug 验证,找到崩溃文件为 isle_opt.rs,最终通过特定方式在 illumos 上成功构建 Rust 标准库。
  • 总结学到的经验,包括 rustcstacker 的使用不足、stacker 在 illumos 上的检测问题等,感谢团队成员的协助。

关键信息:

  • Oxide 使用 Helios 及 illumos,作者用其调试 Rust 编译器段错误。
  • Rust 编译器自举过程及相关阶段,如从之前版本编译、交叉编译等。
  • 找到崩溃的 rustc 版本,生成核心文件,用 mdb 检查相关信息。
  • 提出调用栈耗尽导致崩溃的理论,深入研究 stacker
  • 在其他平台触发 bug 验证,找到崩溃文件,成功构建 Rust 标准库。
  • 总结学到的经验及感谢团队成员。

重要细节:

  • 具体的调试步骤,如使用各种命令查找文件、查看寄存器和调用栈等。
  • stacker 的工作原理及在代码中的使用情况。
  • 不同平台上堆栈相关的设置和行为差异。
  • 如何通过特定方式在 illumos 上构建 Rust 标准库。
阅读 17
0 条评论