问题描述
muxkit 是一个用 C 语言编写的终端复用器,涉及 PTY 管理、Unix Domain Socket IPC、Daemon 进程、信号处理等复杂逻辑。这些领域在 C 语言中容易出现内存安全问题。
潜在风险区域
- PTY 主从设备分配和关闭
- Unix Domain Socket 文件描述符传递(SCM_RIGHTS)
- Session/Pane 状态管理的动态内存
- 信号处理函数中的内存操作
- libvterm 终端模拟的缓冲区管理
建议方案
1. 集成 AddressSanitizer (ASan)
在 CMake 中添加 ASan 编译选项
2. 添加 Valgrind 测试目标
3. GitHub Actions CI 配置
在 CI 中添加 ASan 构建和 Valgrind 测试步骤
4. 测试用例建议
- 启动/停止 daemon 多次
- 创建/销毁多个 session
- 频繁 attach/detach 操作
- 大量 pane 分割和切换
- 长时间运行的内存泄漏检测
优先级
高 - C 语言的内存安全问题可能导致崩溃和安全漏洞
参考资源
- AddressSanitizer 文档
- Valgrind 用户手册
- tmux 的内存测试方法
环境信息
- muxkit 版本: 0.4.3
- 相关模块: src/core/, src/server/, src/client/, src/ui/
问题描述
muxkit 是一个用 C 语言编写的终端复用器,涉及 PTY 管理、Unix Domain Socket IPC、Daemon 进程、信号处理等复杂逻辑。这些领域在 C 语言中容易出现内存安全问题。
潜在风险区域
建议方案
1. 集成 AddressSanitizer (ASan)
在 CMake 中添加 ASan 编译选项
2. 添加 Valgrind 测试目标
3. GitHub Actions CI 配置
在 CI 中添加 ASan 构建和 Valgrind 测试步骤
4. 测试用例建议
优先级
高 - C 语言的内存安全问题可能导致崩溃和安全漏洞
参考资源
环境信息