Adds a **Sanitizers & Warnings** workflow so the bugs fixed in this series don't creep back.
**Draft — stacked on all the other PRs in this series** (#502–#511 and #512). Its own change is the last commit; I'll rebase it as the others are merged. - **Warnings**: GCC and Clang with `ENABLE_WARNINGS` + `ENABLE_WERROR`, running the full test suite. - **ASan + UBSan**: the full suite including the Apache/renderd integration tests; UBSan halts on error. Services report sanitizer errors in their own logs and may still exit successfully, so a final step fails the job if any report appears in `build/tests/logs`. - **TSan**: the unit test executables (TSan can't be injected into the system `httpd`). - The sanitizer jobs run on the runner host rather than in a container, so `vm.mmap_rnd_bits` can be lowered for TSan. The apache2/memcached services that installing the packages starts are stopped, because memcached's default port clashes with the `memcached_default` tests. - The CMake build action accepts `EXTRA_CMAKE_OPTIONS`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01YForD7qSL9LT6FhMuAoKPV You can view, comment on, or merge this pull request online at: https://github.com/openstreetmap/mod_tile/pull/513 -- Commit Summary -- * CMake: compile shared sources once, out-of-tree config.h, dev options * CMake: ENABLE_WARNINGS skips GCC's -Wformat-truncation * Autotools: deprecate, single-source version, pkg-config iniparser * Make the asan/tsan presets usable for the full test suite * tests: migrate from Catch2 v2.13.10 to v3.16.0 * Cache parameterized Mapnik maps per render thread to fix PostGIS memory leak * renderd: fix leaks and unchecked malloc results * Fix threading bugs: recv pointer arithmetic, signal handler safety, dead macro * renderd: avoid -Wunused-result in request_exit() * storage backends: check malloc results, fix NULL dereferences and leaks * storage backends: fix memcached expiry and HTTP proxy cache bugs * g_logger: stop passing log messages to syslog() as the format string * renderd: fall back to IPv4 when IPv6 is unavailable * Fix out-of-bounds read and unterminated hostname found with ASan * Fix unaligned HTCP writes and double free of renderd config sections * renderd_config: fix leak and out-of-bounds read in URI trailing slash code * render_expired: fix heap over-read of the requested-tile bitmap * render_expired: track requested metatiles in a hash set * mod_tile: reject throttling top-up rates that crash Apache children * Fix compiler warnings from -Wall -Wextra * Fix warnings that GCC only reports with optimisation enabled * CI: add Sanitizers & Warnings workflow -- File Changes -- M .github/actions/cmake/build/action.yml (3) A .github/workflows/sanitizers-and-warnings.yml (113) M CMakeLists.txt (81) A CMakePresets.json (84) M Makefile.am (22) M README.rst (2) M configure.ac (27) M includes/g_logger.h (2) M includes/render_config.h (1) M includes/renderd_config.h (4) M src/CMakeLists.txt (145) M src/cache_expire.c (31) M src/g_logger.c (14) M src/gen_tile.cpp (53) M src/mod_tile.c (27) M src/protocol_helper.c (8) M src/render_expired.c (52) M src/render_submit_queue.c (7) M src/renderd.c (177) M src/renderd_config.c (83) M src/request_queue.c (11) M src/store.c (2) M src/store_file.c (22) M src/store_memcached.c (12) M src/store_rados.c (12) M src/store_ro_composite.c (39) M src/store_ro_http_proxy.c (29) M tests/CMakeLists.txt (68) A tests/catch/LICENSE.txt (23) A tests/catch/README (6) D tests/catch/catch.hpp (17976) D tests/catch/catch.hpp.asc (16) A tests/catch/catch_amalgamated.cpp (12603) A tests/catch/catch_amalgamated.hpp (14802) M tests/catch_main.cpp (9) M tests/catch_test_common.cpp (34) M tests/gen_tile_test.cpp (33) M tests/render_expired_test.cpp (38) M tests/render_list_test.cpp (48) M tests/render_old_test.cpp (12) M tests/render_speedtest_test.cpp (12) M tests/renderd_config_test.cpp (118) M tests/renderd_test.cpp (6) A tests/tsan.supp (8) -- Patch Links -- https://github.com/openstreetmap/mod_tile/pull/513.patch https://github.com/openstreetmap/mod_tile/pull/513.diff -- Reply to this email directly or view it on GitHub: https://github.com/openstreetmap/mod_tile/pull/513 You are receiving this because you are subscribed to this thread. Message ID: <openstreetmap/mod_tile/pull/[email protected]>
_______________________________________________ Tile-serving mailing list [email protected] https://lists.openstreetmap.org/listinfo/tile-serving
