Hardware Address Sanitizer (HWASan), Address Sanitizer (ASan) and Kernel Address Sanitizer (KASAN) are a set of memory bug detection tools that should be used during development.
They insert compiler instrumentation for each memory operation which adds
significant overhead -- 2x CPU, 15-30% RAM (ASan: 100% RAM), 50% code size,
which makes them not suitable for use in production.
Since the instrumentation is inserted for each memory operation, they detect a wider range of memory safety bugs, including those applicable to stack and globals. This complements the heap detection tools described in the sections above.
Developers should check the presence of crashes by checking
logcat for bug reports.
HWASan and ASan for detecting userspace memory safety bugs
arm64 we recommend using HWASan, while for
arm and for non-Arm platforms we recommend
using ASan. They provide equivalent functionality and should
be used for detecting memory safety bugs in userspace code.
Enabling them requires a separate build as binaries are not compatible with
non-address sanitized versions. To enable HWASan, set
SANITIZE_TARGET=hwaddress in the build environment, or simply use
_hwasan- suffixed targets.
For more information on HWASan and ASan see the documentation.
KASAN for detecting kernel memory safety bugs
KASAN is the kernel counterpart of the userspace tools above. It shares the same compiler implementation. KASAN and ASan/HWASan are complementary as one tool applies to the kernel and another to userspace. We recommend enabling both at the same time to reduce the number of build configurations and to reduce the testing matrix.