Skip to content

syz-ci, pkg/updater: validate manager configs on new syzkaller builds#7166

Open
anishesg wants to merge 1 commit into
google:masterfrom
proudhare:fix/ph-issue-7025
Open

syz-ci, pkg/updater: validate manager configs on new syzkaller builds#7166
anishesg wants to merge 1 commit into
google:masterfrom
proudhare:fix/ph-issue-7025

Conversation

@anishesg
Copy link
Copy Markdown

@anishesg anishesg commented May 2, 2026

When syscalls are renamed between syzkaller revisions, manager configs that reference the old names
in enable_syscalls cause #syz test to fail immediately with "unknown enabled syscall" before any
VM is started. The failure comes from mgrconfig.Complete in instance.Test(), which validates
syscall names against the current process's compiled-in prog.Target—even though the old names
would be valid for the target SyzkallerCommit being tested.

The fix adds a CheckConfigs callback to pkg/updater.Config that is invoked after a successful
syzkaller build in Updater.build(). In syz-ci, this callback calls checkManagerConfigs, which
runs mgrconfig.ParseEnabledSyscalls for every manager config against the current revision's
syscall table. If a syscall name was renamed in the new revision, the build is rejected before it
is deployed, and uploadSyzkallerBuildError reports the failure to the dashboard. This turns a
silent runtime failure into a proactive build-time error so CI operators know to update manager
configs before the new revision goes live.

Fixes #7025

When syscalls are renamed between syzkaller revisions, manager configs that reference the old names

Signed-off-by: anish k <ak8686@princeton.edu>
Comment thread syz-ci/syz-ci.go
// revision, in particular that enable_syscalls and disable_syscalls only reference syscalls that
// exist in the current build. This is run as part of the syzkaller build process so that syscall
// renames are caught as build errors rather than runtime failures during patch testing.
func checkManagerConfigs(managers []*ManagerConfig) error {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that this still runs with the old version of the code, not the new code, so it won't detect problems.
It needs to run with the new version of the code.

Comment thread syz-ci/syz-ci.go
if cfg == nil {
continue
}
if _, err := mgrconfig.ParseEnabledSyscalls(cfg.Target, cfg.EnabledSyscalls,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we call full config parsing here? It should check both enabled syscalls, but also all other fields.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 6, 2026

Codecov Report

❌ Patch coverage is 0% with 15 lines in your changes missing coverage. Please review.
✅ Project coverage is 50.6%. Comparing base (753c55b) to head (abb05ae).
⚠️ Report is 29 commits behind head on master.

Files with missing lines Patch % Lines
syz-ci/syz-ci.go 0.0% 12 Missing ⚠️
pkg/updater/updater.go 0.0% 3 Missing ⚠️
Additional details and impacted files
Files with missing lines Coverage Δ
pkg/updater/updater.go 0.0% <0.0%> (ø)
syz-ci/syz-ci.go 21.8% <0.0%> (-1.2%) ⬇️

... and 4 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

syz-ci: test manager config (enable_syscalls) on new syzkaller revisions

2 participants