You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
replace shared compiled OpenVMM target/ caches with clean Cargo targets and persistent runner-local sccache
install pinned, SHA-256-verified sccache 0.18.0 through both Linux and Windows runner setup scripts
configure runner services with RUSTC_WRAPPER=sccache, CARGO_INCREMENTAL=0, and a persistent 10-GiB cache
report per-job sccache statistics for OpenVMM binary and test jobs
Root cause
Windows runs 35418573985 and 35420849296 intermittently failed while relinking the cached proc-macro DLL windows_interface-ec5c95fb373e8bb3.dll. Investigation on azure-windows-2 reproduced the exact LNK1104 when the cached DLL was held during a path-invalidated rebuild. The shared target cache was created under the former runner workspace and Cargo-home roots, then restored under the new roots, forcing a broad rebuild over loadable cached DLLs.
A Defender exclusion would only narrow the timing window. Clean target directories remove the stale DLL completely; sccache retains content-addressed compiler reuse without restoring live linker outputs.
Runner rollout
The updated setup scripts were applied successfully to all 15 registered Azure runners:
azure-windows-1 through azure-windows-5
azure-kvm-1 through azure-kvm-3
VMSS-named KVM runners for instances 4 and 5
azure-azlinux-1 through azure-azlinux-5
All runners completed their built-in environment validation and returned online and idle.
Guard writable check when runner is not configured
scripts/setup/setup-linux-runner.sh:640
Fresh-host provisioning without --runner-name still leaves configure_runner=false. That path skips install_runner and protect_runner_installation, so _work/_sccache is not created; this unconditional writable check then fails an otherwise supported setup at the end. Guard the check with the existing .runner marker, as the runner-service validation below already does.
Also addressed the fresh-host setup concern in 6a64cc9: the Linux _work/_sccache writable check now runs only when the .runner marker exists, matching the surrounding service validation boundary.
Install pinned, SHA-256-verified sccache 0.18.0 binaries during Linux
and Windows runner setup. Configure runner services with a protected,
persistent 10 GiB cache under _work/_sccache, use sccache as
RUSTC_WRAPPER, and disable Cargo incremental compilation.
Validate the installed version, service environment, cache-directory
permissions, and Windows ACLs. Document the new cache model and extend
CI configuration tests to enforce sccache lifecycle integration and
removal of cached OpenVMM target trees.
Extend the cross-platform runner validation action to require sccache
and verify that jobs inherit the expected compiler-cache environment.
Confirm that RUSTC_WRAPPER selects sccache, Cargo incremental
compilation is disabled, the cache size is limited to 10 GiB, and
SCCACHE_DIR references an existing directory. On Linux, also require the
cache directory to be writable so provisioning errors fail before build
jobs begin.
Add a cross-platform composite action to manage the runner-local sccache
lifecycle. Validate requested operations, initialize the cache with
per-job statistics, keep the server active for the job, and always
report statistics before stopping it.
Wrap OpenVMM build and test jobs with the new action and remove GitHub
Actions restore/save steps for compiled target directories. Retain
shared Cargo and OpenVMM input caches while avoiding large,
platform-specific target archives.
Expand CI path detection to include the sccache action and runner setup
scripts so cache infrastructure changes trigger the appropriate OpenVMM
tests.
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
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.
Summary
target/caches with clean Cargo targets and persistent runner-localsccachesccache 0.18.0through both Linux and Windows runner setup scriptsRUSTC_WRAPPER=sccache,CARGO_INCREMENTAL=0, and a persistent 10-GiB cacheRoot cause
Windows runs
35418573985and35420849296intermittently failed while relinking the cached proc-macro DLLwindows_interface-ec5c95fb373e8bb3.dll. Investigation onazure-windows-2reproduced the exactLNK1104when the cached DLL was held during a path-invalidated rebuild. The shared target cache was created under the former runner workspace and Cargo-home roots, then restored under the new roots, forcing a broad rebuild over loadable cached DLLs.A Defender exclusion would only narrow the timing window. Clean target directories remove the stale DLL completely; sccache retains content-addressed compiler reuse without restoring live linker outputs.
Runner rollout
The updated setup scripts were applied successfully to all 15 registered Azure runners:
azure-windows-1throughazure-windows-5azure-kvm-1throughazure-kvm-3azure-azlinux-1throughazure-azlinux-5All runners completed their built-in environment validation and returned online and idle.
Validation
validate-nvx: 236 NVX tests (1 skipped), 4 host-profile testssetup-linux-runner.shsetup-windows-whp.ps135431797238, attempt 1: success