主要观点:X11 编程不有趣,与 X 服务器的交互存在竞态条件等问题,常用库未考虑这些,X 的全局锁也不起作用。Picom 作为 X 合成器需了解窗口情况,却存在诸多困难,如需逐个查询窗口、监控窗口树变化等,且 X 服务器会重用 ID。通过复杂算法处理这些问题后,测试和调试困难,而模糊测试是发现 bug 的有力工具。
关键信息:
- X 编程的竞态问题及影响,如获取窗口属性时可能窗口已被销毁等。
- X 库设计的不足,如鼓励无序处理服务器消息等。
- Picom 工作中的困难,如查询窗口、监控窗口树等。
- 模糊测试的方法及应用,包括剥离测试部分、设计内部翻转模式等。
- 模糊测试发现的大量 bug 及修复情况。
重要细节: - X 全局锁存在问题,不能完全阻止服务器状态改变。
- 测试 harness 需模拟 X 服务器的并发,包括消息队列和消息传递等。
- 模糊测试发现的 bug 复杂,难以从用户报告中调试。
- 还研究了符号执行和模型检查,但效果不佳。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。