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