checkers
Checkers is a simple allocation checker for Rust. It plugs in through the global allocator API and can sanity check your unsafe Rust during integration testing.
It can check for the following things:
- Double-frees.
- Attempts to free regions which are not allocated.
- Underlying allocator producting regions not adhering to the requested layout. Namely size and alignment.
- Other arbitrary user-defined conditions (see test).
What it can't do:
- Test multithreaded code. Since the allocator is global, it is difficult to scope the state for each test case.
Examples
You use checkers by installing checkers::Allocator
as your allocator, then
making use of either the #[checkers::test]
or checkers::with!
macros.
static ALLOCATOR: Allocator = Allocator;
The above would result in the following test output:
dangling region: 0x226e5784f30-0x226e5784f40 (size: 16, align: 8).
thread 'test_leak_box' panicked at 'allocation checks failed', tests\leaky_tests.rs:4:1