Repolode
BurtonQin

BurtonQin/lockbud

Analisador estático que detecta deadlocks, use-after-free, invalid-free e possíveis pontos de panic em projetos Rust.

Estrelas
590
Forks
40
Issues abertas
7
Último commit
há 7 dias

O que é?

lockbud é uma ferramenta de análise estática para Rust que procura bugs de concorrência e memória sem executar o programa. Ela acompanha os tempos de vida dos lock guards ao longo do grafo de chamadas de uma crate para sinalizar double-locks e ordens conflitantes de locks que podem causar deadlocks, além de verificar violações de atomicidade e uso incorreto de Condvar. Os detectores de memória cobrem use-after-free e invalid-free, e um modo separado informa possíveis pontos de panic.

A ferramenta é construída sobre os componentes internos do rustc e precisa ser executada com a mesma toolchain nightly para a qual foi direcionada, atualmente nightly-2026-02-07. Ela pode ser chamada diretamente por um script detect ou como subcomando do cargo (cargo lockbud), também está disponível como imagem Docker e pode ser executada em CI. O suporte a locks inclui os tipos Mutex e RwLock de std::sync, parking_lot e spin.

O projeto é o artefato de um artigo da TSE'24 sobre problemas de segurança reais em Rust. O autor observa que os detectores de memória e panic geram muitos falsos positivos na biblioteca padrão e em dependências, por isso recomenda filtrar para a sua própria crate com -l.

Recursos principais

  • 01Detecta deadlocks causados por double-lock e por ordens conflitantes de locks std, parking_lot e spin.
  • 02Detecta bugs de memória use-after-free e invalid-free.
  • 03Sinaliza violações de atomicidade e uso incorreto de Condvar.
  • 04Lista possíveis pontos de panic no código Rust.
  • 05Pode ser executado como script independente, subcomando do cargo ou imagem Docker.

Casos de uso

  • Auditar uma base de código Rust que usa Mutex ou RwLock em busca de possíveis deadlocks antes do lançamento.
  • Adicionar uma verificação de deadlocks a pipelines de CI usando cargo lockbud ou a imagem Docker.
  • Pesquisar técnicas de detecção estática de bugs de concorrência em Rust.

Início rápido

  1. 1

    Instale os componentes necessários da toolchain nightly

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

    Clone o repositório

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

    Acesse o diretório do projeto

    cd lockbud
  4. 4

    Instale o lockbud a partir do código-fonte local

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

Antes de usar

  • Deve ser compilado com a versão exata do rustc nightly compatível, e essa mesma versão deve ser usada para analisar o projeto.
  • A detecção de deadlock cobre apenas os tipos Mutex e RwLock de std, parking_lot e spin.
  • Os detectores de memória e de panic geram muitos falsos positivos, e o detector de panic informa quase todos os locais em que ocorre um panic.
  • A análise de pontos apontados é imprecisa, portanto os resultados podem incluir falsos positivos.

Em coleções

Tópicos

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

Perguntas frequentes

O que é lockbud?
Analisador estático que detecta deadlocks, use-after-free, invalid-free e possíveis pontos de panic em projetos Rust. lockbud é uma ferramenta de análise estática para Rust que procura bugs de concorrência e memória sem executar o programa. Ela acompanha os tempos de vida dos lock guards ao longo do grafo de chamadas de uma crate para sinalizar double-locks e ordens conflitantes de locks que podem causar deadlocks, além de verificar violações de atomicidade e uso incorreto de Condvar. Os detectores de memória cobrem use-after-free e invalid-free, e um modo separado informa possíveis pontos de panic.
lockbud é gratuito? Qual é a licença?
lockbud é open source sob a licença BSD-3-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
lockbud ainda é mantido?
Manutenção ativa. O último commit de lockbud foi em 1 de nov. de 2026.
Para que posso usar lockbud?
Auditar uma base de código Rust que usa Mutex ou RwLock em busca de possíveis deadlocks antes do lançamento. Adicionar uma verificação de deadlocks a pipelines de CI usando cargo lockbud ou a imagem Docker. Pesquisar técnicas de detecção estática de bugs de concorrência em Rust.
Como instalar lockbud?
Instale os componentes necessários da toolchain nightly: rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview Clone o repositório: git clone https://github.com/BurtonQin/lockbud.git Acesse o diretório do projeto: cd lockbud Instale o lockbud a partir do código-fonte local: cargo +nightly-2026-02-07 install --path .
Onde consigo lockbud?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/BurtonQin/lockbud

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados