Turn off Leak Sanitiser in the icons build.

If you configure a Linux build of Puzzles with -fsanitize=address, it
will fail during the icons build, because the icon-maker programs leak
memory when they're run, and by default, this causes ASan to report
all the memory leaks at the end of the program *and then exit 1*.

I don't think 'just fix the memory leaks' is a viable answer. _Some_
of the leaks come from the Puzzles code, and could be fixed by being
more punctilious about freeing everything before exiting (although
that is not necessary for any actually sensible purpose and would
_only_ serve to stop Leak Sanitiser complaining). But some are outside
the Puzzles code completely, apparently from fontconfig. So even if we
fixed all the leaks we could find, we wouldn't prevent the failure
status.

When I want to build with ASan, I've been working around this by
setting ASAN_OPTIONS=detect_leaks=0 in the environment before running
the build command. Easier all round if we just do that _inside_ the
cmake setup.
This commit is contained in:
Simon Tatham
2023-04-20 19:38:09 +01:00
parent 9f08986cf1
commit 777dbffd42

View File

@ -118,7 +118,8 @@ function(build_icon name)
set(redo_arg) set(redo_arg)
endif() endif()
add_custom_command(OUTPUT ${icon_bindir}/${name}-base.png add_custom_command(OUTPUT ${icon_bindir}/${name}-base.png
COMMAND ${icon_bindir}/${name}-icon-maker COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0
${icon_bindir}/${name}-icon-maker
${redo_arg} ${redo_arg}
--screenshot ${icon_bindir}/${name}-base.png --screenshot ${icon_bindir}/${name}-base.png
--load ${icon_srcdir}/${name}.sav --load ${icon_srcdir}/${name}.sav