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

Reply via email to