Skip to content

CI: run the suite under AddressSanitizer#24

Merged
jdatcmd merged 1 commit into
masterfrom
asan-ci
Jul 6, 2026
Merged

CI: run the suite under AddressSanitizer#24
jdatcmd merged 1 commit into
masterfrom
asan-ci

Conversation

@jdatcmd

@jdatcmd jdatcmd commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Adds a 12th CI job: build with -fsanitize=address (new ASAN_FLAGS Makefile hook), preload libasan into a PG 18 server, run the full suite. The memory-safety class we fixed by inspection in #22/#23 now gets caught mechanically on every PR.

Wrinkle discovered en route: PHP dlopens its shared extensions with RTLD_DEEPBIND, which ASAN's runtime refuses (sanitizers issue #611) — the job therefore runs the server with PHP_INI_SCAN_DIR= (no shared extensions) and skips only the cookbook test (its XML recipe needs SimpleXML). Validated locally: 22/22 core + jsonb_plphp under ASAN, zero reports.

🤖 Generated with Claude Code

A new job builds plphp.so and jsonb_plphp.so with -fsanitize=address
(via a new ASAN_FLAGS hook in the Makefiles) and runs the regression
suite against a PostgreSQL 18 server started with libasan preloaded,
so use-after-free and out-of-bounds bugs of the kind fixed in the
per-function-context work are caught mechanically on every PR.

PHP dlopens its shared extensions with RTLD_DEEPBIND, which the
sanitizer runtime refuses, so the server runs with PHP_INI_SCAN_DIR
empty (no shared extensions) and the cookbook test -- whose XML
recipe needs SimpleXML -- is skipped in this job only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jdatcmd
jdatcmd merged commit 3db36f7 into master Jul 6, 2026
12 checks passed
@jdatcmd
jdatcmd deleted the asan-ci branch July 6, 2026 04:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants