checkers 0.3.1

A sanity checker for global allocations.
Documentation

checkers

Documentation Crates Actions Status

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.

#[global_allocator]
static ALLOCATOR: checkers::Allocator = checkers::Allocator;

#[checkers::test]
fn test_allocations() {
    let _ = Box::into_raw(Box::new(42));
}

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