对 picom 进行模糊测试 - yshui --log-level=trace

主要观点:X11 编程不有趣,与 X 服务器的交互存在竞态条件等问题,常用库未考虑这些,X 的全局锁也不起作用。Picom 作为 X 合成器需了解窗口情况,却存在诸多困难,如需逐个查询窗口、监控窗口树变化等,且 X 服务器会重用 ID。通过复杂算法处理这些问题后,测试和调试困难,而模糊测试是发现 bug 的有力工具。
关键信息

  • X 编程的竞态问题及影响,如获取窗口属性时可能窗口已被销毁等。
  • X 库设计的不足,如鼓励无序处理服务器消息等。
  • Picom 工作中的困难,如查询窗口、监控窗口树等。
  • 模糊测试的方法及应用,包括剥离测试部分、设计内部翻转模式等。
  • 模糊测试发现的大量 bug 及修复情况。
    重要细节
  • X 全局锁存在问题,不能完全阻止服务器状态改变。
  • 测试 harness 需模拟 X 服务器的并发,包括消息队列和消息传递等。
  • 模糊测试发现的 bug 复杂,难以从用户报告中调试。
  • 还研究了符号执行和模型检查,但效果不佳。
阅读 12
0 条评论