ci: CFL migrates to Ubuntu 24.04#75
Conversation
b525357 to
dd6fd0e
Compare
dd6fd0e to
7bfb309
Compare
|
Rebased after #85 but this is still broken. |
xyephy
left a comment
There was a problem hiding this comment.
I reproduced the current PR locally in gcr.io/oss-fuzz-base/base-builder:ubuntu-24-04 and both TODOs look resolved:
- MSan: builds and runs to completion — the
use-of-uninitialized-valueatfuzz.cpp:61from the 2026-02-17 job is gone. Upstream appears to have updated the image in the last ~2 months. - Coverage:
SANITIZER=coveragebuild also completes, produces the fuzz binary with-fprofile-instr-generate -fcoverage-mapping. Haven't exercised theclusterfuzzlite-cron.ymlend-to-end but the build step is fine.
A rerun of CI on master may just pass now.
Two concrete follow-ups:
1. Residual fork dependency in .clusterfuzzlite/run-cfl-helper.sh:51. The upstream image ships llvm-symbolizer at /usr/local/bin/llvm-symbolizer (verified):
- image='ghcr.io/sjors/clusterfuzzlite-run-fuzzers:llvm-22-debug'
+ image='gcr.io/oss-fuzz-base/clusterfuzzlite-run-fuzzers:ubuntu-24-04-v1' 2. Pin the action to a SHA while google/clusterfuzzlite#146 is still open, so CI survives rebases on that branch:
- uses: google/clusterfuzzlite/actions/build_fuzzers@migrate-to-ubuntu-24-04
+ uses: google/clusterfuzzlite/actions/build_fuzzers@d2c7d068aab9081cbbc57825ad0d5d6ca6674f95 (same for run_fuzzers)
Expose fuzz_targets.txt in $OUT so run-fuzzers sees targets. Assisted-by: GitHub Copilot Assisted-by: OpenAI GPT-5.1-Codex-Max
It should no longer be needed to use a fork.
7bfb309 to
7d66b8a
Compare
|
@xyephy I've rebased this branch, but didn't make any other changes. You could try running CI on your own fork to test the changes you suggested. (or just open a second PR) My experience with LLM help on this PR (and CFL in general) has been disastrous, so beware you might waste time :-) |
|
One important thing to check, is to create a deliberate bug to trigger the memory sanitizer. See that it provides a correct source code mapping (a previous source of headaches, and it eventually turned out to be a file format version issue). |
|
@Sjors tried running CI on my fork as you suggested. These are the modifications that actually worked. Root cause MSan was dying at the first deref of Fix ~ extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv)
{
#ifdef SV2_MSAN_ENABLED
__msan_unpoison(argc, sizeof(*argc));
__msan_unpoison(argv, sizeof(*argv));
const int ac{*argc};
char** const av{*argv};
__msan_unpoison(av, sizeof(*av) * (ac + 1));
for (int i = 0; i < ac; ++i) {
if (av[i] != nullptr) {
__msan_unpoison(av[i], std::strlen(av[i]) + 1);
}
}
#endif
SetArgs(*argc, *argv);
initialize();
return 0;
} Validation —
Happy to push onto this branch as 2–3 small commits (MSan patch / image swap / SHA pin) or open a separate PR — whichever is easier to review. Coverage TODO I haven't touched yet. |
|
@xyephy thanks! Can you open a fresh PR? And then open a second (draft) PR on top of it with the intentional bug. |
It should no longer be needed to use a fork.
Waiting for: