clang tidy pipeline fixes - #7657
Merged
Merged
Conversation
Install a version-matched clang-tidy on macOS and make the shared runner portable across both CI environments.
Emit DWARF4 debug information and suppress SDL's one-time initialization allocation so memcheck can report actionable failures.
Now that the `[ "$CONFIGURATION" = "Debug" ]` typo is fixed, valgrind actually runs on the Linux Debug legs again, and memcheck fails the build on six "definitely lost" contexts (480 bytes) that all originate inside SDL3's X11 backend at X11_CreateDevice, reached from SDL_VideoInit. These aren't ours to fix: both call sites (os_init's SDL_Init and the temporary video init in resolution_default(), reached via gr_init) already pair their init with a matching quit, and the allocations are made and kept by SDL/libX11 across SDL_VideoQuit. Collapsing the repeated init/quit cycles would only reduce the block count, not the number of leak contexts, so the build would still fail. The suppression is truncated at X11_CreateDevice on purpose: it stays caller-agnostic (covering both the os_init and gr_init paths) and avoids matching on SDL_InitSubSystem_REAL.part.0, whose .part.0 suffix is a partial-inlining artifact of how SDL3 happened to be built. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Linux clang-16 Debug leg fails memcheck on a single zero-byte block lost in glibc's `_dl_find_object_update()`, reached from `dlopen()` while SDL probes its video backends. It is loader bookkeeping that glibc keeps by design, and it only shows up on some legs because it depends on how many objects the loader has mapped by that point. The file already carried three suppressions for this class, but each pinned a full, exact glibc stack, so every new loader code path costs another CI round. Replace them with a single block matching on `_dl_open`: nothing of ours runs below that frame, only loader internals and the static constructors of shared libraries the loader brings in, so this gives up no coverage we care about while retiring the whole class. All three removed blocks contain `_dl_open` themselves and are therefore subsumed by it. Both new suppressions match `definite,possible` rather than `definite` alone, since `--errors-for-leak-kinds` defaults to `definite,possible` and the same allocations would otherwise fail the build if valgrind ever reported them as possibly lost instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JohnAFernandez
approved these changes
Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The clang-tidy setup was only valid for Linux builds; MacOS runners need a slightly different setup