Skip to content

增加内存安全测试:集成 Valgrind/ASan 到 CI 流程 #8

Description

@Ding262

问题描述

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/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions