Repolode
BurtonQin

BurtonQin/lockbud

Rustプロジェクトを静的解析し、デッドロック、use-after-free、invalid-free、panicの可能性がある箇所を検出します。

スター
590
フォーク
40
未解決の Issue
7
最終コミット
7 日前

これは何?

lockbudは、プログラムを実行せずにRustの並行処理やメモリのバグを探す静的解析ツールです。クレートの呼び出しグラフをたどってロックガードのライフタイムを追跡し、デッドロックにつながる二重ロックや競合するロック順序を検出するほか、atomicity違反やCondvarの誤用もチェックします。メモリ検出機能はuse-after-freeとinvalid-freeを対象とし、別モードではpanicの可能性がある箇所を報告します。

このツールはrustcの内部機能を利用しているため、対象とするものと同じnightly toolchainで実行する必要があります。現在の対象はnightly-2026-02-07です。detectスクリプトから直接実行するか、cargoのサブコマンド(cargo lockbud)として呼び出せます。Dockerイメージも用意されており、CIでも実行できます。ロックの検出対象はstd::sync、parking_lot、spinのMutexとRwLockです。

このプロジェクトは、Rustにおける実環境の安全性問題を扱ったTSE'24論文の成果物です。作者によると、メモリ検出機能とpanic検出機能は標準ライブラリや依存関係に由来する誤検知が多いため、-lを使って自分のクレートに絞り込むことが推奨されています。

主な機能

  • 01std、parking_lot、spinのロックについて、二重ロックや競合するロック順序によるデッドロックを検出します。
  • 02use-after-freeとinvalid-freeのメモリバグを報告します。
  • 03atomicity違反やCondvarの誤用を検出します。
  • 04Rustコードで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プロジェクトを静的解析し、デッドロック、use-after-free、invalid-free、panicの可能性がある箇所を検出します。 lockbudは、プログラムを実行せずにRustの並行処理やメモリのバグを探す静的解析ツールです。クレートの呼び出しグラフをたどってロックガードのライフタイムを追跡し、デッドロックにつながる二重ロックや競合するロック順序を検出するほか、atomicity違反や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

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト