rust
rust copied to clipboard
Lint against `&T` to `&mut T` and `&T` to `&UnsafeCell<T>` transmutes
Conversion from & to &mut are and always were immediate UB, and we already lint against them, but until now the lint did not catch the case were the reference was in a field.
Conversion from & to &UnsafeCell is more nuanced: Stacked Borrows makes it immediate UB, but in Tree Borrows it is sound.
However, even in Tree Borrows it is UB to write into that reference (if the original value was Freeze). In all cases crater found where the lint triggered, the reference was written into.
Lints (mutable_transmutes existed before):
The
mutable_transmuteslint catches transmuting from&Tto&mut Tbecause it is undefined behavior.Example
unsafe { let y = std::mem::transmute::<&i32, &mut i32>(&5); }Produces:
error: transmuting &T to &mut T is undefined behavior, even if the reference is unused, consider instead using an UnsafeCell --> .\example.rs:5:17 | 5 | let y = std::mem::transmute::<&i32, &mut i32>(&5); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: transmute from `&i32` to `&mut i32` = note: `#[deny(mutable_transmutes)]` on by defaultExplanation
Certain assumptions are made about aliasing of data, and this transmute violates those assumptions. Consider using
UnsafeCellinstead.
The
unsafe_cell_transmuteslint catches transmuting or casting from&Tto&UnsafeCell<T>because it dangerous and might be undefined behavior.Example
use std::cell::Cell; unsafe { let x = 5_i32; let y = std::mem::transmute::<&i32, &Cell<i32>>(&x); y.set(6); let z = &*(&x as *const i32 as *const Cell<i32>); z.set(7); }Produces:
error: transmuting &T to &UnsafeCell<T> is error-prone, rarely intentional and may cause undefined behavior --> .\example.rs:6:17 | 6 | let y = std::mem::transmute::<&i32, &Cell<i32>>(&x); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: transmute from `*&i32` to `(*&Cell<i32>).value` = note: `#[deny(unsafe_cell_transmutes)]` on by default error: transmuting &T to &UnsafeCell<T> is error-prone, rarely intentional and may cause undefined behavior --> .\example.rs:9:17 | 9 | let z = &*(&x as *const i32 as *const Cell<i32>); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: transmute from `i32` to `Cell<i32>.value`Explanation
Conversion from
&Tto&UnsafeCell<T>might be immediate undefined behavior, depending on unspecified details of the aliasing model.Even if it is not, writing to it will be undefined behavior if there was no
UnsafeCellin the originalT, and even if there was, it might be undefined behavior (again, depending on unspecified details of the aliasing model).It is also highly dangerous and error-prone, and unlikely to be useful.
r? compiler
The Miri subtree was changed
cc @rust-lang/miri
needs a rebase before we can crater it
@bors try
:hourglass: Testing commit 5c1d66e45d055cd7afff125c459079017e28d194 with merge 94971c26f8adfe74bcc03377efe05cd2f11f8efa...
The job x86_64-gnu-tools failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
Compiling rustc_codegen_ssa v0.0.0 (/checkout/compiler/rustc_codegen_ssa)
Compiling rustc_transmute v0.0.0 (/checkout/compiler/rustc_transmute)
Compiling rustc_resolve v0.0.0 (/checkout/compiler/rustc_resolve)
Compiling rustc_trait_selection v0.0.0 (/checkout/compiler/rustc_trait_selection)
error: transmuting &T to &UnsafeCell<T> is undefined behavior, even if the reference is unused, consider using UnsafeCell on the original data
|
|
25 | unsafe { std::mem::transmute(infcx) }
|
|
= note: transmute from `(*&rustc_infer::infer::InferCtxt<'_>).tcx.gcx` to `(*&solve::delegate::SolverDelegate<'_>).0.obligation_inspector.value`
error: could not compile `rustc_trait_selection` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
Build completed unsuccessfully in 0:08:05
The job dist-x86_64-linux failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
file:.git/config remote.origin.url=https://github.com/rust-lang-ci/rust
file:.git/config remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
file:.git/config gc.auto=0
file:.git/config http.https://github.com/.extraheader=AUTHORIZATION: basic ***
file:.git/config branch.try.remote=origin
file:.git/config branch.try.merge=refs/heads/try
file:.git/config submodule.library/backtrace.url=https://github.com/rust-lang/backtrace-rs.git
file:.git/config submodule.library/stdarch.active=true
file:.git/config submodule.library/stdarch.url=https://github.com/rust-lang/stdarch.git
file:.git/config submodule.src/doc/book.active=true
---
[RUSTC-TIMING] rustc_expand test:false 29.568
[RUSTC-TIMING] rustc_incremental test:false 15.869
[RUSTC-TIMING] rustc_transmute test:false 7.966
[RUSTC-TIMING] rustc_monomorphize test:false 17.545
error: transmuting &T to &UnsafeCell<T> is undefined behavior, even if the reference is unused, consider using UnsafeCell on the original data
|
|
25 | unsafe { std::mem::transmute(infcx) }
|
|
= note: transmute from `(*&rustc_infer::infer::InferCtxt<'_>).tcx.gcx` to `(*&solve::delegate::SolverDelegate<'_>).0.obligation_inspector.value`
[RUSTC-TIMING] rustc_trait_selection test:false 8.623
error: could not compile `rustc_trait_selection` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
---
Caused by:
Command RUST_BACKTRACE=full python3 /checkout/x.py build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true [at /checkout/obj] has failed with exit code Some(1)
Stack backtrace:
0: <anyhow::Error>::msg::<alloc::string::String>
at /rust/deps/anyhow-1.0.86/src/backtrace.rs:27:14
1: <opt_dist::exec::CmdBuilder>::run
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/exec.rs:80:17
2: <opt_dist::exec::Bootstrap>::run
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/exec.rs:181:9
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:225:13
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:225:13
4: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}::{closure#0}, ()>
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/timer.rs:111:22
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:214:9
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:214:9
6: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}, opt_dist::training::RustcPGOProfile>
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/timer.rs:111:22
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:211:29
8: opt_dist::main
at /rustc/94971c26f8adfe74bcc03377efe05cd2f11f8efa/src/tools/opt-dist/src/main.rs:401:18
9: <fn() -> core::result::Result<(), anyhow::Error> as core::ops::function::FnOnce<()>>::call_once
9: <fn() -> core::result::Result<(), anyhow::Error> as core::ops::function::FnOnce<()>>::call_once
at /rustc/75ac3b6331873133c4f7a10f2252afd6f3906c6a/library/core/src/ops/function.rs:250:5
10: std::sys_common::backtrace::__rust_begin_short_backtrace::<fn() -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>
at /rustc/75ac3b6331873133c4f7a10f2252afd6f3906c6a/library/std/src/sys_common/backtrace.rs:155:18
11: std::rt::lang_start::<core::result::Result<(), anyhow::Error>>::{closure#0}
at /rustc/75ac3b6331873133c4f7a10f2252afd6f3906c6a/library/std/src/rt.rs:159:18
12: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
13: std::panicking::try::do_call
at /rustc/75ac3b6331873133c4f7a10f2252afd6f3906c6a/library/std/src/panicking.rs:559:40
14: std::panicking::try
at /rustc/75ac3b6331873133c4f7a10f2252afd6f3906c6a/library/std/src/panicking.rs:523:19
:broken_heart: Test failed - checks-actions
The job x86_64-gnu-tools failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
## Running ui tests in tests/fail for i686-pc-windows-msvc
Compiler: "MIRI_ENV_VAR_TEST"="0" "MIRI_TEMP"="/tmp/miri-uitest-d1juOT" "RUST_BACKTRACE"="1" /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/miri "--error-format=json" "--sysroot=/checkout/obj/build/x86_64-unknown-linux-gnu/miri-sysroot" "-Dwarnings" "-Dunused" "-Ainternal_features" "-Zui-testing" "--target" "i686-pc-windows-msvc" "--out-dir" OUT_DIR
FAILED TEST: tests/fail/concurrency/read_only_atomic_load_large.rs
command: MIRI_ENV_VAR_TEST="0" MIRI_TEMP="/tmp/miri-uitest-d1juOT" RUST_BACKTRACE="1" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/miri" "--error-format=json" "--sysroot=/checkout/obj/build/x86_64-unknown-linux-gnu/miri-sysroot" "-Dwarnings" "-Dunused" "-Ainternal_features" "-Zui-testing" "--target" "i686-pc-windows-msvc" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/ui/tests/fail/concurrency" "tests/fail/concurrency/read_only_atomic_load_large.rs" "-Zmiri-disable-stacked-borrows" "--edition" "2021"
error: actual output differed from expected
Execute `./miri test --bless` to update `tests/fail/concurrency/read_only_atomic_load_large.stderr` to the actual output
--- tests/fail/concurrency/read_only_atomic_load_large.stderr
+++ <stderr output>
+++ <stderr output>
-error: Undefined Behavior: large atomic load operations cannot be performed on read-only memory
+error: casting `&T` to `&UnsafeCell<T>` is undefined behavior, even if the reference is unused, consider using an `UnsafeCell` on the original data
|
|
-LL | x.load(Ordering::Relaxed);
+LL | let x = &X as *const AlignedI64 as *const AtomicI64;
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ large atomic load operations cannot be performed on read-only memory
+ | ------------------------------------------- casting happend here
-these operations often have to be implemented using read-modify-write operations, which require writeable memory
+LL | let x = unsafe { &*x };
-see <https://doc.rust-lang.org/nightly/std/sync/atomic/index.html#atomic-accesses-to-read-only-memory> for more information
|
- = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
- = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
+ = note: cast from `AlignedI64.0` to `std::sync::atomic::AtomicI64.v`
+ = note: `#[deny(unsafe_cell_reference_casting)]` on by default
-note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
+error: miri cannot be run on programs that fail compilation
+error: miri cannot be run on programs that fail compilation
-error: aborting due to 1 previous error
+error: aborting due to 2 previous errors
error: `cannot be performed on read-only memory` not found in diagnostics on line 17
|
|
17 | x.load(Ordering::Relaxed); //~ERROR: cannot be performed on read-only memory
|
error: there were 1 unmatched diagnostics that occurred outside the testfile and had no pattern
Error: miri cannot be run on programs that fail compilation
Error: miri cannot be run on programs that fail compilation
error: there were 1 unmatched diagnostics
##[error] --> tests/fail/concurrency/read_only_atomic_load_large.rs:14:22
|
14 | let x = unsafe { &*x };
| ^^^ Error: casting `&T` to `&UnsafeCell<T>` is undefined behavior, even if the reference is unused, consider using an `UnsafeCell` on the original data
full stderr:
full stderr:
error: casting `&T` to `&UnsafeCell<T>` is undefined behavior, even if the reference is unused, consider using an `UnsafeCell` on the original data
|
|
LL | let x = &X as *const AlignedI64 as *const AtomicI64;
| ------------------------------------------- casting happend here
LL | let x = unsafe { &*x };
|
|
= note: cast from `AlignedI64.0` to `std::sync::atomic::AtomicI64.v`
= note: `#[deny(unsafe_cell_reference_casting)]` on by default
error: miri cannot be run on programs that fail compilation
error: aborting due to 2 previous errors
---
Error:
0: ui tests in tests/fail for i686-pc-windows-msvc failed
1: tests failed
Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
error: test failed, to rerun pass `--test ui`
Caused by:
process didn't exit successfully: `/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps/ui-5c8e20648e59180a --quiet` (exit status: 1)
Command cd "/checkout" && env -u MAKEFLAGS -u MFLAGS AR_x86_64_unknown_linux_gnu="ar" CARGO_INCREMENTAL="0" CARGO_PROFILE_RELEASE_DEBUG="0" CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="true" CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="true" CARGO_PROFILE_RELEASE_STRIP="false" CARGO_TARGET_DIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools" CC_x86_64_unknown_linux_gnu="sccache cc" CFG_COMPILER_BUILD_TRIPLE="x86_64-unknown-linux-gnu" CFG_COMPILER_HOST_TRIPLE="x86_64-unknown-linux-gnu" CFG_RELEASE="1.82.0-nightly" CFG_RELEASE_CHANNEL="nightly" CFG_RELEASE_NUM="1.82.0" CFG_VERSION="1.82.0-nightly (580e4a981 2024-07-29)" CFG_VER_DATE="2024-07-29" CFG_VER_HASH="580e4a9814f129f816c8f8e085ae8ee46f3bd5f3" CFLAGS_x86_64_unknown_linux_gnu="-ffunction-sections -fdata-sections -fPIC -m64" CXXFLAGS_x86_64_unknown_linux_gnu="-ffunction-sections -fdata-sections -fPIC -m64" CXX_x86_64_unknown_linux_gnu="sccache c++" DOC_RUST_LANG_ORG_CHANNEL="https://doc.rust-lang.org/nightly" LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib" LIBC_CHECK_CFG="1" LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/lib" LIBZ_SYS_STATIC="1" LZMA_API_STATIC="1" MIRI="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/miri" MIRI_HOST_SYSROOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" MIRI_SYSROOT="/checkout/obj/build/x86_64-unknown-linux-gnu/miri-sysroot" MIRI_TEST_TARGET="i686-pc-windows-msvc" RANLIB_x86_64_unknown_linux_gnu="ar s" REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" RUSTBUILD_NATIVE_DIR="/checkout/obj/build/x86_64-unknown-linux-gnu/native" RUSTC="/checkout/obj/build/bootstrap/debug/rustc" RUSTC_BOOTSTRAP="1" RUSTC_BREAK_ON_ICE="1" RUSTC_ERROR_METADATA_DST="/checkout/obj/build/tmp/extended-error-metadata" RUSTC_HOST_FLAGS="-Zunstable-options --check-cfg=cfg(bootstrap)" RUSTC_INSTALL_BINDIR="bin" RUSTC_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_LINT_FLAGS="-Wrust_2018_idioms -Wunused_lifetimes -Dwarnings" RUSTC_REAL="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_STAGE="1" RUSTC_SYSROOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1" RUSTC_TLS_MODEL_INITIAL_EXEC="1" RUSTC_VERBOSE="0" RUSTC_WRAPPER="/checkout/obj/build/bootstrap/debug/rustc" RUSTDOC="/checkout/obj/build/bootstrap/debug/rustdoc" RUSTDOCFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(parallel_compiler) --check-cfg=cfg(rust_analyzer) -Dwarnings -Wrustdoc::invalid_codeblock_attributes --crate-version 1.82.0-nightly\t(580e4a981\t2024-07-29) --cfg=parallel_compiler" RUSTDOC_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTDOC_REAL="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustdoc" RUSTFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(parallel_compiler) --check-cfg=cfg(rust_analyzer) -Zmacro-backtrace -Csplit-debuginfo=off --cfg=parallel_compiler -Clink-args=-Wl,-z,origin -Clink-args=-Wl,-rpath,$ORIGIN/../lib -Zunstable-options -Zon-broken-pipe=kill" RUST_TEST_THREADS="16" SYSROOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage1" TERM="xterm" __CARGO_DEFAULT_LIB_METADATA="nightlytool-rustc" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "test" "--target" "x86_64-unknown-linux-gnu" "--release" "-Zbinary-dep-depinfo" "-j" "16" "--locked" "--color" "always" "--manifest-path" "/checkout/src/tools/miri/Cargo.toml" "--" "--quiet" (failure_mode=Exit) did not execute successfully.
Created at: src/core/builder.rs:1413:33
Executed at: src/core/build_steps/test.rs:553:19
Build completed unsuccessfully in 0:01:20
@bors try
:hourglass: Trying commit 59c22c3a03fe9b7700839b0b4e4815e793aecf55 with merge be92fb74b45973cada559b3491cafdc5b2097496...
The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
------
> importing cache manifest from ghcr.io/rust-lang/rust-ci-cache:3aacb9c90579defe09351ac5e8ee504359f8054da6326ff19038f1b7c90e3cb2aafe33685c6d9b76ee8d2ccbd187ca80c46ab5380485abdd8c0ce7d69cd8d8fd:
------
##[endgroup]
Setting extra environment values for docker: --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure:
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--set', 'rust.lld=false', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id := 99999999
---
Downloaded boml v0.3.1
Compiling boml v0.3.1
Compiling y v0.1.0 (/checkout/compiler/rustc_codegen_gcc/build_system)
Finished `release` profile [optimized] target(s) in 3.83s
Running `/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-codegen/x86_64-unknown-linux-gnu/release/y test --use-system-gcc --use-backend gcc --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/cg_gcc --release --mini-tests --std-tests`
Using system GCC
[BUILD] example
[AOT] mini_core_hello_world
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/cg_gcc/mini_core_hello_world
abc
---
compiler/rustc_lint/src/mutable_transmutes.rs - mutable_transmutes::UNSAFE_CELL_REFERENCE_CASTING (line 608)
test result: FAILED. 95 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1.41s
error: doctest failed, to rerun pass `-p rustc_lint --doc`
local time: Mon Jul 29 22:27:36 UTC 2024
network time: Mon, 29 Jul 2024 22:27:36 GMT
##[error]Process completed with exit code 1.
Post job cleanup.
CI finally pass; someone to try and run crater?
@bors try
:hourglass: Trying commit cc72a92133f6fc5b779a9ce9a9931d73d3e6d31c with merge 09146510cdb33d15474a35fde290187a88b1cf35...
:sunny: Try build successful - checks-actions
Build commit: 09146510cdb33d15474a35fde290187a88b1cf35 (09146510cdb33d15474a35fde290187a88b1cf35)
@craterbot check
:ok_hand: Experiment pr-128351 created and queued.
:robot: Automatically detected try build 09146510cdb33d15474a35fde290187a88b1cf35
:mag: You can check out the queue and this experiment's details.
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
:construction: Experiment pr-128351 is now running
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
:tada: Experiment pr-128351 is completed!
:bar_chart: 1189 regressed and 4 fixed (487120 total)
:newspaper: Open the full report.
:warning: If you notice any spurious failure please add them to the blacklist! :information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
@bors try
:hourglass: Trying commit 89e1d44bfa4cbed63d21244bd54b87b168916d8d with merge 16d823b1c168ce52c66ccc00dfd686f775a45c65...
:sunny: Try build successful - checks-actions
Build commit: 16d823b1c168ce52c66ccc00dfd686f775a45c65 (16d823b1c168ce52c66ccc00dfd686f775a45c65)
@craterbot check
:ok_hand: Experiment pr-128351-1 created and queued.
:robot: Automatically detected try build 16d823b1c168ce52c66ccc00dfd686f775a45c65
:mag: You can check out the queue and this experiment's details.
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
@craterbot abort
:wastebasket: Experiment pr-128351-1 deleted!
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
@craterbot check crates=https://crater-reports.s3.amazonaws.com/pr-128351/retry-regressed-list.txt
:ok_hand: Experiment pr-128351-1 created and queued.
:robot: Automatically detected try build 16d823b1c168ce52c66ccc00dfd686f775a45c65
:mag: You can check out the queue and this experiment's details.
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
@craterbot p=1
This is 2k crates, so let's not have to wait behind the ~4 million other crates worth of jobs that are currently queued.
:memo: Configuration of the pr-128351-1 experiment changed.
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more