Re: [PATCH] Makefile: suppress annotated leaks with certain ASan options
From: Junio C Hamano <hidden>
Date: 2023-01-20 19:41:40
Taylor Blau [off-list ref] writes:
However, it is possible to use the leak sanitizer without `SANITIZE=leak`. This happens when building with `SANITIZE=address` and enabling the leak sanitizer via the `ASAN_OPTIONS` variable (by including the string "detect_leaks=1").
Yuck. I cannot tell if this falls into "don't do it then if it hurts" or pretty common thing people do that is worth helping.
Making it possible to rely on `UNLEAK()` when implicitly using the leak checker via SANITIZE=address builds.
But as long as you did all the work, sure, why not ;-).
I found this while playing around with GitHub's ASan-enabled CI builds for our internal fork following a merge with v2.38.3. The check-chainlint recipe in t/Makefile started using "git diff" via d00113ec34 (t/Makefile: apply chainlint.pl to existing self-tests, 2022-09-01), which triggered a leak in some of GitHub's custom code. I was surprised when marking the variable with UNLEAK() didn't do the trick, and ended up down this rabbit hole ;-).
Thanks. Will queue.