对 clang C++前端错误进行分诊

主要观点:作者已为 clang C++前端漏洞分诊约两年,分享所学经验和分诊良好实践,包括多种漏洞类型及处理方式等。
关键信息:

  • 每天 clang 前端会有多个新漏洞,需及时评估并分类,如非 bug、未定义行为、回归、崩溃、不同编译器行为差异、诊断误报或漏报、不支持的扩展等。
  • 分诊时若有需要可要求提供最小可重现示例(用 creduce 等工具),标注needs-reduction,社区人员会帮忙简化。
  • 新发布后常用 git bisect 追踪回归问题。
  • 代码和回溯应正确引用,添加断言、回溯等可方便查找相关漏洞、构建更强大的测试套件等。
  • 对于崩溃漏洞,要确定是否需要简化、验证重现、基于断言构建回溯等。
  • 对于未定义行为漏洞,可根据一些迹象判断,解释原因并提供替代方法。
  • 诊断相关漏洞需维护者参与判断。
  • 对于不同编译器行为不一致的漏洞,需参考标准并判断 clang 是否正确。
  • 对于扩展相关漏洞,标注相应扩展标签。
    重要细节:
  • clang 频道 on the llvm Discord可寻求帮助。
  • 分诊过程中要注意各种细节和规范,以提高效率和准确性。
  • 感谢 Aaron Ballman 和 Vlad Serebrennikov 的反馈。
阅读 11
0 条评论