Fix Clang 21 analyzer findings - #13593
Merged
Merged
Conversation
bneradt
pushed a commit
to bneradt/trafficserver-ci
that referenced
this pull request
Aug 27, 2026
The analyzer job is pinned to Ubuntu 22.04 and versioned Clang 14 tools, which prevents it from benefiting from newer diagnostics and uses a checker that newer Clang releases no longer provide. Use the Ubuntu 26.04 image and its unversioned Clang tool entry points. Keep the supported checker set and exclude the vendored Highway subtree so third-party findings do not prevent an ATS-owned clean baseline. Merge this after apache/trafficserver#13593 and publish the Ubuntu 26.04 image first so the existing analyzer job stays green during the transition.
bneradt
force-pushed
the
clang-analyzer-21-cleanup
branch
from
August 27, 2026 02:56
39bfa37 to
7b2ccc0
Compare
bneradt
force-pushed
the
clang-analyzer-21-cleanup
branch
from
August 27, 2026 19:44
7b2ccc0 to
a381ade
Compare
serrislew
reviewed
Aug 27, 2026
bneradt
force-pushed
the
clang-analyzer-21-cleanup
branch
from
August 27, 2026 21:39
a381ade to
9c97100
Compare
Newer Clang releases expose latent ownership and error-handling issues, while the analyzer preset currently produces a GCC compilation database that Clang cannot reliably consume. This patch selects Clang explicitly for the analyzer preset, fixes the reported leaks, unchecked stream calls, and directory scanning under a mutex, and reshapes the remaining flagged code so the analyzer can follow it. That gives ATS a clean diagnostic baseline before the job moves to Ubuntu 26.04. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
bneradt
force-pushed
the
clang-analyzer-21-cleanup
branch
from
August 27, 2026 21:46
9c97100 to
8960422
Compare
serrislew
approved these changes
Aug 27, 2026
cmcfarlen
pushed a commit
to cmcfarlen/trafficserver
that referenced
this pull request
Sep 9, 2026
Newer Clang releases expose latent ownership and error-handling issues, while the analyzer preset currently produces a GCC compilation database that Clang cannot reliably consume. This patch selects Clang explicitly for the analyzer preset, fixes the reported leaks, unchecked stream calls, and directory scanning under a mutex, and reshapes the remaining flagged code so the analyzer can follow it. That gives ATS a clean diagnostic baseline before the job moves to Ubuntu 26.04. Co-authored-by: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit c31517c)
Contributor
|
Cherry-picked to the 10.2.x branch as 91f21fb for the 10.2.1 release. |
This was referenced Sep 15, 2026
cmcfarlen
pushed a commit
to cmcfarlen/trafficserver
that referenced
this pull request
Sep 15, 2026
Newer Clang releases expose latent ownership and error-handling issues, while the analyzer preset currently produces a GCC compilation database that Clang cannot reliably consume. This patch selects Clang explicitly for the analyzer preset, fixes the reported leaks, unchecked stream calls, and directory scanning under a mutex, and reshapes the remaining flagged code so the analyzer can follow it. That gives ATS a clean diagnostic baseline before the job moves to Ubuntu 26.04. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
cmcfarlen
pushed a commit
to cmcfarlen/trafficserver
that referenced
this pull request
Sep 15, 2026
Clang 21 still flags the unguarded insertion-sort path used for SRV records, even after the pointer array is initialized. This keeps the 10.1.x analyzer job failing after the earlier analyzer fixes. This branch backports apache#13593 and apache#12226, and uses stable sorting with the existing SRV comparator. The sort preserves priority/key ordering while avoiding the analyzer's unguarded-sort false positive.
ezelkow1
pushed a commit
that referenced
this pull request
Sep 15, 2026
* Backport Clang 21 analyzer fixes to 9.2.x Newer Clang releases expose ownership and error-handling issues in 9.2.x as well as file I/O performed while holding the body factory lock. This patch adapts the applicable fixes from #13593 to the older source layout and APIs. CMake and changes to code absent from 9.2.x are omitted. (cherry picked from commit c31517c) * Backport earlier Clang analyzer fixes to 9.2.x The older branch still contains uninitialized error values and cache volume indices flagged by the analyzer. This patch adapts #12226 to initialize those values, verify the freelist element size before division, and remove dead initializers. (cherry picked from commit 0cf0f3e) * Backport session reuse key-file checks Missing or unreadable Redis authentication key files can leave invalid file descriptors and read lengths in the session reuse plugin. This patch backports the key-file checks from #10273 and closes the file only when it was opened successfully. Configuration-file handling is addressed separately for the older branch. (cherry picked from commit 26affda) * Backport header rewrite rule ownership fix Incomplete header rewrite rules can leak when configuration parsing ends without handing the rule to the configuration. This patch adapts #11386 to keep temporary rules under unique ownership until the configuration accepts them. (cherry picked from commit 0887836) * 9.2.x: latest clang-analyzer fixes The Ubuntu 26.04 clang-analyzer job exposes unchecked I/O, a rule leak, and configuration reads under a mutex in the older 9.2.x code. This branch backports the applicable fixes from #13593, #12226, #10273, and #11386. The remaining changes handle file and socket failures, keep session reuse configuration I/O outside the reader lock, and make the nonblocking eventfd operation explicit to the analyzer. * Address review findings and isolate TLS autest A full-size Redis key leaves no room for its terminator, and failed configuration reloads can repeat file I/O on every lookup. Modern Fedora policy also prevents the TLS autest from exercising TLS 1.0. This patch tightens the key bound, restores timestamp-gated reloads, clarifies configuration publication, and guards device-dependent checks. The TLS test uses isolated OpenSSL settings and RSA key exchange so all four protocol checks remain active. --------- Co-authored-by: Hiroaki Nakamura <hnakamur@gmail.com> Co-authored-by: Fei Deng <feid@yahooinc.com> Co-authored-by: Bryan Call <bcall@apache.org> Co-authored-by: bneradt <bneradt@yahooinc.com>
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.
Newer Clang releases expose latent ownership and error-handling issues,
while the analyzer preset currently produces a GCC compilation database
that Clang cannot reliably consume.
This patch selects Clang explicitly for the analyzer preset, fixes the
reported leaks, unchecked stream calls, and directory scanning under a
mutex, and reshapes the remaining flagged code so the analyzer can
follow it. That gives ATS a clean diagnostic baseline before the job
moves to Ubuntu 26.04.