本文记录了一次在 illumos 操作系统上调试 Rust 编译器 (rustc) 段错误的经历。作者首先介绍了 Rust 编译器的自举过程以及段错误的背景信息,然后详细描述了使用 illumos 提供的各种调试工具(如 coreadm、mdb、pmap 和 truss)逐步定位问题的过程。通过分析寄存器、调用堆栈、地址空间和系统调用,作者最终确定问题是由 rustc 解析器中的调用堆栈耗尽引起的,并进一步发现 stacker 库的使用加剧了这个问题。作者还提供了一些改进建议,例如在 rustc 中更频繁地调用 stacker、修复 stacker 在 illumos 上无法检测堆栈大小的问题,以及在 illumos 上运行 Rust CI 等。