HomeFreeBSD

Add `--enable-asan` and `--enable-ubsan` switches

Description

Add --enable-asan and --enable-ubsan switches

configure now accepts --enable-asan and --enable-ubsan switches
which results in passing -fsanitize=address
and -fsanitize=undefined, respectively, to the compiler. Those
flags are enabled in GitHub workflows for ZTS and zloop. Errors
reported by both instrumentations are corrected, except for:

  • Memory leak reporting is (temporarily) suppressed. The cost of fixing them is relatively high compared to the gains.
  • Checksum computing functions in module/zcommon/zfs_fletcher* have UBSan errors suppressed. It is completely impractical to enforce 64-byte payload alignment there due to performance impact.
  • There's no ASan heap poisoning in module/zstd/lib/zstd.c. A custom memory allocator is used there rendering that measure unfeasible.
  • Memory leaks detection has to be suppressed for cmd/zvol_id. zvol_id is run by udev with the help of ptrace(2). Tracing is incompatible with memory leaks detection.

Reviewed-by: Ahelenia ZiemiaƄska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes #12928

Details

Provenance
Damian Szuberski <szuberskidamian@gmail.com>Authored on Feb 3 2022, 10:35 PM
GitHub <noreply@github.com>Committed on Feb 3 2022, 10:35 PM
Parents
rGaa9905d89b35: zed-functions.sh: escape newline to produce valid json
Branches
Unknown
Tags
Unknown