Skip to content

Fix the linux-asan CI lane: the font entry missed the detect_leaks=0 list - #89

Merged
offdev merged 2 commits into
masterfrom
fix/linux-asan-font-entry
Oct 11, 2026
Merged

offdev merged 2 commits into
masterfrom
fix/linux-asan-font-entry

Conversation

@offdev

@offdev offdev commented Oct 11, 2026

Copy link
Copy Markdown
Owner

The $(font) ctest entry uses $(--gtest_filter=Font*) (M2-TEXT-01). The $(FontSdf*) suites added by M2-TEXT-03 match that wildcard, so the entry now also runs $(FontSdfSmoke) — the offscreen GL smoke that creates a headless EGL context.

The entry was not on the $(LAIGE_ASAN) block's $(detect_leaks=0) list, so it inherited the job-level $(ASAN_OPTIONS) with $(detect_leaks=1) and LeakSanitizer aborted it on the process-lifetime EGL display vendor state at process exit. The 2026-10-11 merge run (38097683448) shows exactly this: 464 bytes in 7 allocations, every stack allocated through $(createHeadless) (eglInitialize) or the smoke's $(submit) draw.

Every other entry whose suites can create that context (gl_context, render_thread, sprite_draw, render_counters, text_items, font_sdf, and the unfiltered laige-render_tests entry) was already on the list, which is why they passed in the same run.

Changes (tests/laige-render/CMakeLists.txt only)

  • Add $(font) to the LAIGE_ASAN block's $(set_tests_properties) list — the replacement environment already carries $(LAIGE_TEST_FONT_PATH), which the entry needs (test-level ENVIRONMENT replaces the job-level one).
  • Raise the entry's TIMEOUT 60 → 120 (same shape as text_items/font_sdf, which also run the offscreen smoke).
  • Update the two stale comments (the entry's own note still said 'no GL calls'; the ASan-block note now names every entry that creates the context and why font is on the list).

In-run ASan/UBSan error detection stays fully active — only the at-exit vendor-state leak check is disabled for this entry, exactly like the other render entries.

Verification

  • Local build-asan tree (clang++ 23, Debug, LAIGE_ASAN=ON): the generated CTestTestfile.cmake gives the font entry $(ASAN_OPTIONS=abort_on_error=1:halt_on_error=1:detect_leaks=0:log_path=...;LAIGE_TEST_FONT_PATH=...) — identical to the other render entries; the 37 GL-free Font*/FontSdf* suites pass.
  • The GL smoke itself is CI-only (no local GPU access): the definitive check is the merge-lane $(linux-asan) job (ubuntu-24.04, clang++ 18) after merge. In the failed run the same smoke already passed under detect_leaks=0 in the unfiltered, text_items, and font_sdf entries of the very same process set — this change only puts the font entry on that same footing.

…list

The font entry's 'Font*' filter also matches the FontSdf* suites
added by M2-TEXT-03, so it now runs the FontSdfSmoke offscreen GL
smoke. It was not on the LAIGE_ASAN block's detect_leaks=0 list, so
it inherited the job-level ASAN_OPTIONS with detect_leaks=1 and
LeakSanitizer aborted it on the process-lifetime EGL display
vendor state (2026-10-11 CI run 38097683448: 464 bytes in 7
allocations, every stack through createHeadless/submit).

Add font to the block (the replacement environment already carries
LAIGE_TEST_FONT_PATH), give the entry the same 120s timeout as the
same-shaped text_items/font_sdf entries, and update the two stale
comments. In-run ASan/UBSan error detection stays fully active.
@offdev
offdev merged commit cb794c4 into master Oct 11, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant