Repolode
BurtonQin

BurtonQin/lockbud

Rust 프로젝트에서 교착 상태, use-after-free, invalid-free 및 패닉 가능 지점을 탐지하는 정적 분석기입니다.

스타
590
포크
40
열린 이슈
7
마지막 커밋
7일 전

어떤 프로젝트인가요?

lockbud는 프로그램을 실행하지 않고 Rust 코드의 동시성 및 메모리 버그를 찾는 정적 분석 도구입니다. 크레이트의 호출 그래프 전반에서 락 가드의 수명을 추적해 교착 상태를 일으킬 수 있는 이중 락과 상충하는 락 획득 순서를 탐지하고, 원자성 위반과 Condvar 오용도 검사합니다. 메모리 탐지 기능은 use-after-free와 invalid-free를 확인하며, 별도 모드에서는 패닉이 발생할 수 있는 위치를 보고합니다.

이 도구는 rustc 내부 기능을 기반으로 하며, 현재 대상인 nightly-2026-02-07과 동일한 nightly 툴체인으로 실행해야 합니다. detect 스크립트로 직접 실행하거나 cargo 하위 명령(cargo lockbud)으로 사용할 수 있고, Docker 이미지로도 제공되며 CI에서 실행할 수 있습니다. 락 지원 범위에는 std::sync, parking_lot 및 spin의 Mutex와 RwLock 타입이 포함됩니다.

이 프로젝트는 Rust의 실제 안전성 문제를 다룬 TSE'24 논문의 실험용 산출물입니다. 작성자는 메모리 및 패닉 탐지기가 표준 라이브러리와 의존성에서 비롯된 오탐을 많이 내므로, -l을 사용해 자체 크레이트만 대상으로 필터링하는 것을 권장합니다.

핵심 기능

  • 01std, parking_lot 및 spin 락에서 이중 락과 상충하는 락 획득 순서로 인한 교착 상태를 탐지합니다.
  • 02use-after-free 및 invalid-free 메모리 버그를 보고합니다.
  • 03원자성 위반과 Condvar 오용을 탐지합니다.
  • 04Rust 코드에서 패닉이 발생할 수 있는 위치를 나열합니다.
  • 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 및 패닉 가능 지점을 탐지하는 정적 분석기입니다. lockbud는 프로그램을 실행하지 않고 Rust 코드의 동시성 및 메모리 버그를 찾는 정적 분석 도구입니다. 크레이트의 호출 그래프 전반에서 락 가드의 수명을 추적해 교착 상태를 일으킬 수 있는 이중 락과 상충하는 락 획득 순서를 탐지하고, 원자성 위반과 Condvar 오용도 검사합니다. 메모리 탐지 기능은 use-after-free와 invalid-free를 확인하며, 별도 모드에서는 패닉이 발생할 수 있는 위치를 보고합니다.
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 통계는 매일 갱신됩니다.

관련 프로젝트