Repolode
BurtonQin

BurtonQin/lockbud

面向 Rust 项目的静态分析工具,用于检测死锁、并发、内存错误及潜在 panic 位置。

Star
590
Fork
40
未关闭 Issue
7
最近提交
7天前

这是什么?

lockbud 是一款 Rust 静态分析工具,无需运行程序即可查找并发与内存类缺陷。它通过追踪锁守卫(lock guard)在调用图中的生命周期,发现可能导致死锁的 double-lock 与锁顺序冲突,同时支持原子性违背和 Condvar 误用的检测。内存检测器覆盖 use-after-free 和 invalid-free,另有独立模式用于报告可能的 panic 位置。

该工具基于 rustc 内部接口实现,必须使用与其匹配的 nightly 工具链运行,目前为 nightly-2026-02-07。它既可以通过脚本直接调用,也可以作为 cargo 子命令(cargo lockbud)使用,并提供 Docker 镜像,便于在 CI 中运行。锁类型支持 std::sync、parking_lot 和 spin 中的 Mutex 与 RwLock。

项目源自一篇发表于 TSE'24 的论文,研究真实 Rust 项目中的安全问题。作者提示,内存与 panic 检测器会对标准库和依赖产生较多误报,建议通过 -l 参数只关注自身 crate。

核心功能

  • 01检测 std、parking_lot 和 spin 锁的 double-lock 与锁顺序冲突死锁。
  • 02识别 use-after-free 和 invalid-free 内存错误。
  • 03发现原子性违背与 Condvar 误用问题。
  • 04列出代码中可能触发 panic 的位置。
  • 05可作为独立脚本、cargo 子命令或 Docker 镜像运行。

适用场景

  • 在发布前审查使用 Mutex 或 RwLock 的 Rust 代码,排查潜在死锁。
  • 通过 cargo lockbud 或 Docker 镜像将死锁检查接入 CI 流水线。
  • 研究 Rust 并发缺陷的静态检测方法。

快速上手

  1. 1

    安装所需的 nightly 工具链组件

    rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview
  2. 2

    克隆仓库

    git clone https://github.com/BurtonQin/lockbud.git
  3. 3

    进入项目目录

    cd lockbud
  4. 4

    从本地源码安装 lockbud

    cargo +nightly-2026-02-07 install --path .

使用前须知

  • 必须使用其支持的精确 rustc nightly 版本构建,并且分析项目时也要使用相同版本。
  • 死锁检测仅覆盖 std、parking_lot 和 spin 的 Mutex 与 RwLock 类型。
  • 内存和 panic 检测器误报较多,panic 检测器几乎会报告所有 panic 位置。
  • 指向分析不够精确,结果可能包含误报。

收录于专题

标签

#rust#static-analysis#deadlock#concurrency#memory-safety#bug-detection#security#static-analyzer

常见问题

lockbud 是什么?
面向 Rust 项目的静态分析工具,用于检测死锁、并发、内存错误及潜在 panic 位置。 lockbud 是一款 Rust 静态分析工具,无需运行程序即可查找并发与内存类缺陷。它通过追踪锁守卫(lock guard)在调用图中的生命周期,发现可能导致死锁的 double-lock 与锁顺序冲突,同时支持原子性违背和 Condvar 误用的检测。内存检测器覆盖 use-after-free 和 invalid-free,另有独立模式用于报告可能的 panic 位置。
lockbud 可以免费使用吗?用的什么许可证?
lockbud 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
lockbud 还在维护吗?
活跃维护中。lockbud 最近一次提交是在 2026年11月1日。
lockbud 适合用来做什么?
在发布前审查使用 Mutex 或 RwLock 的 Rust 代码,排查潜在死锁。 通过 cargo lockbud 或 Docker 镜像将死锁检查接入 CI 流水线。 研究 Rust 并发缺陷的静态检测方法。
lockbud 怎么安装和运行?
安装所需的 nightly 工具链组件: rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview 克隆仓库: git clone https://github.com/BurtonQin/lockbud.git 进入项目目录: cd lockbud 从本地源码安装 lockbud: cargo +nightly-2026-02-07 install --path .
在哪里获取 lockbud?
源代码和安装说明在 GitHub 上:https://github.com/BurtonQin/lockbud

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目