Looking for Missed Alarm Bugs in a Formal Verification Tool
Analyzing the effectiveness of tools like YARPGen in exploring state space for finding missed alarm bugs in formal verification.
John Regehr is a computer scientist and expert in compilers, formal verification, and systems-level software engineering. His blog explores compiler optimizations, fuzzing, bugfinding, and formal-methods-assisted approaches to building reliable software.
9 articles from this blog
Analyzing the effectiveness of tools like YARPGen in exploring state space for finding missed alarm bugs in formal verification.
Explores the complexities of compiler optimization, including peephole optimization, superoptimizers, and the meta-problems of applying transformations.
Explains the principles behind peephole optimizations in compilers, focusing on correctness and refinement over simple equivalence.
Using formal methods and Alive2 to find bugs in LLVM's AArch64 backend by lifting compiled code back to IR for refinement checking.
Explores a hybrid fuzzing approach combining mutation-based fuzzing with formal methods (Alive2) to find bugs in LLVM optimization passes.
A technical analysis of ARM spinlock implementation using ldrex/strex instructions, comparing it to x64 CPU internals.
Introduces llvm-reduce, a specialized tool for automatically reducing LLVM IR test cases to aid in debugging compiler failures.
Discusses common pathologies in bug tracking and proposes improvements for responsible bug management in software development.
Explores the nuanced behavior of 'undef' values in LLVM IR, detailing permissible and non-permissible compiler transformations.