aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: prioritize blob-based base commitsAleksandr Nogikh2026-01-136-38/+145
| | | | | | | | | | | | | Consider Cc'd mailing lists when selecting the exact base commit. Among the base commits determined based on blob sha value from the git patch, first select the ones that match both the trees of the Cc'd subsystems and their primary branches. If it gives no exact match, select a base commit that comes from a tree of a Cc'd subsystem. As fallback, take any subsystem tree. This should prevent valid, but suprising patch series triage results.
* pkg/vcs: return multiple base commit candidatesAleksandr Nogikh2026-01-131-1/+5
| | | | | Return the commits that represent unique sets of branches. Sort the list topologically, breaking ties by commit date.
* syz-cluster: guess base patch by blob hashes from the diffAleksandr Nogikh2026-01-095-21/+99
| | | | | Before traversing the list of trees, attempt to determine the base tree/commit by looking at the SHA hashes from the supplied git diffs.
* syz-cluster: build commit graph during triageAleksandr Nogikh2026-01-091-0/+1
| | | | | It will accelerate various commit search operations by orders of magnitude.
* syz-cluster: poll the media treeAleksandr Nogikh2026-01-091-0/+6
| | | | | | Poll the tree and consider it during patch series triage. Note that the media lists are not monitored as of now, so the tree will only be used when we receive media patches through other mailing lists.
* syz-cluster: increase the number of parallel workflowsAleksandr Nogikh2026-01-091-1/+1
|
* syz-cluster: show series versions in the dashboardPimyn Girgis2026-01-083-1/+27
| | | | | | Display a list of other versions of the same series on the series details page. Fetch all series sharing the same title and render them in a new "Series Versions" table, allowing navigation between different versions of a patch series.
* syz-cluster: add tests for series and patch name filteringPimyn Girgis2026-01-081-0/+88
| | | | Adds unit tests for the series and patch name filtering functionality in the database repository.
* syz-cluster: add filtering by series and patch namePimyn Girgis2026-01-085-12/+45
| | | | | Update SeriesFilter in pkg/db to include PatchName and SeriesName fields, implement the SQL logic to filter by these fields case-insensitively, and expose these filters in the dashboard UI.
* all: remove unused nolint directivesDmitry Vyukov2026-01-026-8/+0
|
* syz-cluster/pkg/db: make it possible to use emulator in dashboard testsDmitry Vyukov2025-12-312-25/+36
|
* syz-cluster: refactor DockerfilesAleksandr Nogikh2025-12-3111-70/+36
| | | | | | | Copy everything into the build context. Add a .dockerignore file to avoid copying the definitely unnecessary files and folders. Check copyrights presence in Dockerfiles.
* syz-cluster: add pkg/osutil to Docker containersAleksandr Nogikh2025-12-304-0/+4
| | | | It's become necessary after #6533.
* syz-cluster/pkg/db: fix bunch of bugs in emulator managementDmitry Vyukov2025-12-291-56/+55
| | | | | | | | | | | | | | | | | | | There is a bunch of bugs now: 1. The emulator binary is killed when the first test finished, before subsequent tests start. 2. The child emulator binary (the actual emulator "emulator_main") is leaked. These subprocesses are never killed and live past tests. (that's why we get away with the first problem) 3. Errors are not handled well if emulator setup fails. We leave spannerHost empty and subsequent tests ignore the original error (since only the first test executes setupSpannerOnce). 4. NewTransientDB duplicates a bunch of work that needs to happen only once (in particular os.Setenv("SPANNER_EMULATOR_HOST")). Fix all of that. Support spanner emulator distributed as part of google-cloud-sdk while we are here, so that tests can be run locally.
* syz-cluster/pkg/db: don't drop test databasesDmitry Vyukov2025-12-291-17/+2
| | | | | | | | | | | | | | | | | | | | | | This is not necessary, makes things slower, than is not working anyway: === RUN TestSeriesRepositoryUpdate spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesRepositoryUpdate (0.07s) === RUN TestSeriesInsertSession spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesInsertSession (0.11s) === RUN TestQueryWaitingSessions spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestQueryWaitingSessions (0.12s) === RUN TestSessionTestRepository spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSessionTestRepository (0.09s) === RUN TestMigrations spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestMigrations (0.15s) === RUN TestStatsSQLs spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled
* all: use any instead of interface{}Dmitry Vyukov2025-12-2212-37/+37
| | | | Any is the preferred over interface{} now in Go.
* syz-cluster: update READMEAleksandr Nogikh2025-12-081-1/+41
| | | | Include more details about the system.
* syz-cluster: basic support for finding invalidationAleksandr Nogikh2025-12-0118-21/+181
| | | | | | Add some initial #syz invalid support to syz-cluster. For now, mark all findings as invalid and don't display that such series have findings on the web dashboard.
* syz-cluster: monitor the fsdevel listAleksandr Nogikh2025-11-281-0/+1
|
* syz-cluster: log HEAD commit date during triageAleksandr Nogikh2025-11-281-1/+1
| | | | | | Currently triage logs look a bit confusing since for some commits they include author date and for other commit date. Use commit date everywhere.
* syz-cluster: gracefully handle abandoned packed-refs.lockAleksandr Nogikh2025-11-261-0/+4
| | | | | If the previous processing terminated in a non-graceful way, the lock file remains in place and prevents further polls.
* syz-cluster: don't use custom git tree tagsAleksandr Nogikh2025-11-263-6/+5
| | | | | | Since remote branches are already mapped to "tree/name" local branches, there's no need for the special "tree-HEAD" tag anymore. Simplify the code.
* syz-cluster: fetch base kernels more oftenAleksandr Nogikh2025-11-262-4/+4
| | | | | Fetch and do build test of the base kernels 3 times per day instead of 2.
* syz-cluster: log the tip of the polled branchAleksandr Nogikh2025-11-261-0/+1
| | | | | It will help better understand lags between the kernel revision used by syz-cluster and the latest tree commit.
* syz-cluster: improve boot test loggingAleksandr Nogikh2025-11-211-8/+17
| | | | Collect trace logs and make them accessible via the web UI.
* syz-cluster: preserve branches when cloning a repoAleksandr Nogikh2025-11-173-3/+3
| | | | | | | | Remap remote branches to local ones both when polling remote repositories and when cloning the distributed repository. This will ensure that the branches are still accessible via TreeName/BranchName (it got broken during the latest changes).
* syz-cluster: simplify shared git repo mounting codeAleksandr Nogikh2025-11-124-58/+30
| | | | | | | | | | Instead of a complicated overlayfs setup, do a lightweight git clone in a way that the cloned local copy keeps on referencing the git object storage on the NFS. It's simpler code-wise and hopefully will be less susceptible to failures when local git operations coincide with a git fetch on the shared repository.
* syz-cluster: poll drm treeAleksandr Nogikh2025-11-121-0/+6
| | | | | | | | Add the drm tree to the list of trees considered during patch series triage. Currently we sometimes hit false positives becase of not considering this tree, see e.g. https://ci.syzbot.org/series/1ecba15f-79c3-40ff-99c6-8f3540bddf65
* syz-cluster: add link to download the whole seriesAleksandr Nogikh2025-10-273-1/+54
| | | | | This will simplify debugging of mistriaged patch series that ended up either not applying anywhere or ended up with a build error.
* syz-cluster: set workflow step retry strategyAleksandr Nogikh2025-10-222-0/+8
| | | | | | | | | | | | | When a triage or build step coincides with a cron job that polls new kernel trees, they often fail due to git command noticing that the repository is being updated. In this case, the step logs an error and exits with status=1. Argo workflows offers a functionality to retry such steps up to the specific number of times and with exponentially increasing backoffs. Configure the build and triage step templates to retry 3 times with 5 and then 10 minutes distance between the retries.
* pkg/email/lore: wrap the Email objectAleksandr Nogikh2025-10-214-11/+10
| | | | | Wrapping the email.Email object will let us add lore-specific fields to it at a later point.
* syz-cluster: checkout the mm-new treeAleksandr Nogikh2025-10-201-0/+6
| | | | | | A number of mm patches do not apply neither on top of torvalds, nor on top of linux-next. The mm/mm-new branch seems to be a more reliable base.
* syz-cluster: extend dashboard testingAleksandr Nogikh2025-10-172-1/+8
| | | | | | | Check a few more URLs. Add a TODO about the problem around template error handling - if we stream the output directly to w, we cannot set the 500 status if a problem happens somewhere mid-template.
* syz-cluster: display the reports count graphAleksandr Nogikh2025-10-174-0/+37
| | | | | | Apart from just the total number of findings (some of which may end up being non-reported), also display specifically the number of reports that have found their way to the mailing lists.
* syz-cluster: do more runs in stagingAleksandr Nogikh2025-10-071-1/+1
|
* syz-cluster: set fuzzing_vmsAleksandr Nogikh2025-10-078-0/+8
| | | | Otherwise reproductions sometimes take almost all VMs.
* syz-cluster: rewrite fuzz config generationAleksandr Nogikh2025-10-0737-385/+1801
| | | | | | | | Instead of a predefined set of manually written syz-manager configs, construct it dynamically from different bits. During triage, select not just one, but all matching fuzzer configurations and then merge them together.
* syz-cluster: switch qemus to q35Aleksandr Nogikh2025-10-075-5/+5
| | | | KMSAN fails to boot when a specific q35 version is specified.
* syz-cluster: switch to 7G qemu VMsAleksandr Nogikh2025-10-0714-22/+22
| | | | | | 3G is not enough for kernels with KMSAN. Slightly decrease the number of used VMs to fit into the available CPUs/RAM.
* syz-cluster: run KMSAN fuzzing in parallel to KASANAleksandr Nogikh2025-10-071-2/+2
| | | | There's no reason to do first one and then another.
* syz-cluster: support multiple campaigns per fuzz targetAleksandr Nogikh2025-10-078-95/+166
| | | | | | | | During triage, process each fuzzing campaign separately as they may have different base kernel revisions (e.g. if the newest revisions of the kernel no longer build/boot under the specific kernel configuration). Refactor the representation of the fuzzing targets in api.go.
* syz-cluster: log boot step findingsAleksandr Nogikh2025-10-021-0/+3
| | | | | | If a boot test step failed and we don't report the finding to the dashboard, print the report/output to the console to facilitate debugging.
* syz-cluster: prefix fuzzing-related stepsAleksandr Nogikh2025-10-013-13/+27
| | | | | Specify a track name for each fuzzing campaign. It will help distinguish them once there are multiple ones.
* syz-cluster: configure bug title filterAleksandr Nogikh2025-10-013-1/+30
| | | | | Instead of just checking whether the bug was observed on the base crash, accept a regexp of accepted bug titles as well.
* syz-cluster: pass fuzz config to the fuzz step as jsonAleksandr Nogikh2025-10-013-41/+52
| | | | | | Instead of passing the values individually, save the FuzzConfig object as JSON and pass it as an artifact. This will simplify adding more new fields.
* syz-cluster: support multiple fuzz tasksAleksandr Nogikh2025-10-013-8/+10
| | | | | Adjut the workflow template and the API to run multiple fuzzing campaigns as a part of single patch series processing.
* syz-cluster: reorder workflow stepsAleksandr Nogikh2025-10-011-18/+22
| | | | | | | | First build and boot test the base kernel, then proceed to the patched kernel. It prevents us from reporting build/boot errors not introduced by the patch.
* pkg/osutil: make VerboseError nest other errorsAleksandr Nogikh2025-10-011-2/+2
| | | | | After this change it fits more naturally into the Go's error functionality.
* syz-cluster: switch away from bitnami/gitAleksandr Nogikh2025-09-032-2/+2
| | | | | | The image is to be deprecated. Closes #6350.
* syz-cluster/workflow/fuzz-step: nuance archive upload errorsAleksandr Nogikh2025-09-031-5/+8
| | | | | If the archive turned out to be too large, just print an error message and don't return an error from the status update function.