Abstract Execution Checker
The AE subsystem provides abstract-execution-based bug detection.
Headers: include/Checker/AE/
Implementation: lib/Checker/AE/
Tool: lotus-ae in tools/checker/lotus-ae.cpp
Overview
AE runs abstract interpretation and specialized detectors to report memory safety issues such as buffer overflows, null dereferences, use-after-free, and invalid frees.
Main components
AbstractInterpretationdrives the fixpoint analysis.AEDetectorand its concrete detectors implement bug-specific checks.Value abstractions such as
AbstractValue,NumericValue, andAbstractStatemodel execution state during analysis.RelationSolverand related utilities support symbolic reasoning in the abstract domain.
Checks supported
Buffer overflow
Null pointer dereference
Use-after-free
Invalid free
Memory leak
Command-line usage
./build/bin/lotus-ae --all input.bc
./build/bin/lotus-ae --overflow --null-deref input.bc
./build/bin/lotus-ae --handle-recur=widen-narrow --widen-delay=5 input.bc
Important options
--allenables all AE bug detectors.--overflow,--null-deref,--use-after-free,--invalid-free, and--mem-leakenable individual checks.--handle-recurchooses the recursion strategy.--widen-delaydelays widening in loops.-vprints more detailed traces for findings.
See also
See Checker Tools for the front-end overview.
See Pulse Checker and KINT Numerical Bug Checker for other checker families.