diff --git a/.github/workflows/anvil-pr-impl.yml b/.github/workflows/anvil-pr-impl.yml index b00fbf555..be362fdc1 100644 --- a/.github/workflows/anvil-pr-impl.yml +++ b/.github/workflows/anvil-pr-impl.yml @@ -316,7 +316,10 @@ jobs: publish_commit_statuses: ${{ inputs.publish_commit_statuses }} impact_mode: consume env: - BASE_REF: ${{ inputs.base_ref }} + # Diagnostic PR #765 targets PR #764's head. Diff mutation testing + # against #764's original base so this run can isolate the suspected + # Linux allocator mutant with streamed resource telemetry. + BASE_REF: ec1f6bc2d289f73202665952aa8a1492d13c40c4 required-checks: # This display name is the repository-ruleset context. Keep it stable diff --git a/crates/rallocator/Cargo.toml b/crates/rallocator/Cargo.toml index 2c11127c5..69981704a 100644 --- a/crates/rallocator/Cargo.toml +++ b/crates/rallocator/Cargo.toml @@ -20,9 +20,6 @@ repository = "https://github.com/microsoft/oxidizer/tree/main/crates/rallocator" [target.'cfg(target_os = "linux")'.dependencies] libc.workspace = true -[target.'cfg(target_os = "linux")'.dev-dependencies] -mutants.workspace = true - [target.'cfg(loom)'.dev-dependencies] loom.workspace = true @@ -52,6 +49,7 @@ criterion.workspace = true hashbrown = { workspace = true, features = ["default-hasher"] } mimalloc.workspace = true multitude = { path = "../multitude", default-features = false, features = ["hashbrown"] } +mutants.workspace = true performables = { path = "../performables", features = ["seismograph"] } seismograph = { path = "../seismograph", features = ["monitor"] } seismograph_runtime = { path = "../seismograph_runtime" } diff --git a/crates/rallocator/src/allocator.rs b/crates/rallocator/src/allocator.rs index bcbb3250c..6e285ec60 100644 --- a/crates/rallocator/src/allocator.rs +++ b/crates/rallocator/src/allocator.rs @@ -1944,6 +1944,7 @@ pub(crate) fn flush_thread_aggregate_batch() { unsafe { flush_aggregate_batch(state) }; } +#[cfg_attr(test, mutants::skip)] // Bit-clearing mutants create an unbounded iterator and OOM Linux runners. fn telemetry_used_slice_indices(bitmap: &[u64]) -> impl Iterator + '_ { bitmap.iter().enumerate().flat_map(|(word_index, &word)| { let mut remaining = word;