From ae0780def7353ec713a96ef498d10e4ef70692a2 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sun, 26 Jul 2026 04:37:27 -0400 Subject: [PATCH 1/2] bloom: silence CHECK_ASSERTION_SIDE_EFFECTS false positive Using gcc 15, compiling with CHECK_ASSERTION_SIDE_EFFECTS=1 causes a complaint about this line in bloom.c having a side effect: assert(version == 1 || version == 2); I think this is pretty clearly a false positive, as those comparisons should not have side effects. The side-effect checker uses a magic definition of assert() that relies on the compiler's optimizer to drop a reference to an otherwise unused variable. And for whatever reason, gcc chooses not to do so here under -O2 (side note: if you have -O0 in your CFLAGS, that naturally creates many more false positives!). This code has been around for a while, but nobody seems to have noticed because we use an older version of the compiler in our static-analysis ci job, and it does not complain. Presumably very few people run this check locally on their more modern compilers. Let's silence the false positive to avoid confusion for anyone running locally, and to make it possible to upgrade the image we use for our static-analysis job. We could just switch to our custom ASSERT() here, but I think we can improve the code by integrating the assertion into the if/else cascade. That avoids repeating the logic about which versions are acceptable. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- bloom.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bloom.c b/bloom.c index a805ac0c29..aac8f448c9 100644 --- a/bloom.c +++ b/bloom.c @@ -605,10 +605,10 @@ int bloom_filter_contains_vec(const struct bloom_filter *filter, uint32_t test_bloom_murmur3_seeded(uint32_t seed, const char *data, size_t len, int version) { - assert(version == 1 || version == 2); - if (version == 2) return murmur3_seeded_v2(seed, data, len); - else + else if (version == 1) return murmur3_seeded_v1(seed, data, len); + else + BUG("unexpected bloom version: %d", version); } From 1a1579c42d9d4c78d4d4df5e4d3d8bc73e3ddf9b Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sun, 26 Jul 2026 04:39:05 -0400 Subject: [PATCH 2/2] ci: bump ubuntu image version for static-analysis job We recently ran into a case[1] where old versions of coccinelle ran very slowly, but newer ones are fine. The version we use in GitHub's CI was the old slow version, leading to timeouts of the static-analysis job. We get the old version because we ask for the ubuntu-22.04 image. That has coccinelle 1.1.1, but the "fast" improvement is in coccinelle 1.3.0, specifically their 58619b8fe (break up envs for e1 & e2, 2024-08-18). Bumping to ubuntu-25.10 would be enough to get that new version. But I don't see any need to ask for a specific version at all. We originally used a specific version because coccinelle wasn't available in ubuntu 20.04, so we pinned to 18.04 in d051ed77ee (.github/workflows/main.yml: run static-analysis on bionic, 2021-02-08). Later that got bumped in ef46584831 (ci: update 'static-analysis' to Ubuntu 22.04, 2022-08-23) when 18.04 support was dropped. It seems like the absence of coccinelle was a blip in 20.04, and we can just stick with "latest" going forward. I tested the result on GitHub's CI. I bumped the matching line in the GitLab definition, but didn't have a simple means of testing (but it's such a trivial change nothing could go wrong, right?). [1] https://lore.kernel.org/git/20260724091152.27794-2-tnyman@openai.com/ Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- .github/workflows/main.yml | 4 ++-- .gitlab-ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cf341d74db..9896a817eb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -458,8 +458,8 @@ jobs: if: needs.ci-config.outputs.enabled == 'yes' env: jobname: StaticAnalysis - CI_JOB_IMAGE: ubuntu-22.04 - runs-on: ubuntu-22.04 + CI_JOB_IMAGE: ubuntu-latest + runs-on: ubuntu-latest concurrency: group: static-analysis-${{ github.ref }} cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1a8e90932c..c495348098 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -226,7 +226,7 @@ test:fuzz-smoke-tests: - ./ci/run-build-and-minimal-fuzzers.sh static-analysis: - image: ubuntu:22.04 + image: ubuntu:latest stage: analyze needs: [ ] variables: