FreeBSD The Power to Serve

Kernel Address Sanitizer on AArch64

Contact: Kyle Evans <kevans@FreeBSD.org>

Sanitizers are bug detection facilities which use a combination of instrumentation inserted by the compiler (LLVM in this case) and runtime state tracking to detect bugs in C code. They can automatically detect many types of C programming bugs, such as use-after-frees and uses of uninitialized variables, which may otherwise require substantial effort to identify. They are particularly effective in combination with regression testing suites or fuzzing tools such as syzkaller. Unlike tools such as Valgrind, software must be recompiled to enable a given sanitizer, but sanitizers can be used in the kernel. Kernels with sanitizers enabled incur a significant performance overhead from the runtime, in both CPU utilization and memory usage.

As of 89c52f9d59fa, the kernel address sanitizer that was previously exclusive to amd64 is ported to arm64.

Prior testing has been done on a decent variety of machines, including:

  • Various Ampere Altra machines

  • QEMU

  • Microsoft’s "Volterra" Devkit

  • bhyve (WIP).

Further testing on other hardware would be both welcomed and appreciated.

Sponsor: Juniper Networks, Inc.
Sponsor: Klara, Inc.


Last modified on: March 31, 2023 by Graham Perrin