rust icon indicating copy to clipboard operation
rust copied to clipboard

Lint against `&T` to `&mut T` and `&T` to `&UnsafeCell<T>` transmutes

Open ChayimFriedman2 opened this issue 1 year ago • 44 comments

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_transmutes lint catches transmuting from &T to &mut T because 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 default

Explanation

Certain assumptions are made about aliasing of data, and this transmute violates those assumptions. Consider using UnsafeCell instead.


The unsafe_cell_transmutes lint catches transmuting or casting from &T to &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 &T to &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 UnsafeCell in the original T, 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.

Crater summary is below.

r? compiler

ChayimFriedman2 avatar Jul 29 '24 15:07 ChayimFriedman2

The Miri subtree was changed

cc @rust-lang/miri

rustbot avatar Jul 29 '24 15:07 rustbot

needs a rebase before we can crater it

oli-obk avatar Jul 29 '24 15:07 oli-obk

@bors try

oli-obk avatar Jul 29 '24 16:07 oli-obk

:hourglass: Testing commit 5c1d66e45d055cd7afff125c459079017e28d194 with merge 94971c26f8adfe74bcc03377efe05cd2f11f8efa...

bors avatar Jul 29 '24 16:07 bors

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

rust-log-analyzer avatar Jul 29 '24 16:07 rust-log-analyzer

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

rust-log-analyzer avatar Jul 29 '24 16:07 rust-log-analyzer

:broken_heart: Test failed - checks-actions

bors avatar Jul 29 '24 16:07 bors

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

rust-log-analyzer avatar Jul 29 '24 21:07 rust-log-analyzer

@bors try

oli-obk avatar Jul 29 '24 21:07 oli-obk

:hourglass: Trying commit 59c22c3a03fe9b7700839b0b4e4815e793aecf55 with merge be92fb74b45973cada559b3491cafdc5b2097496...

bors avatar Jul 29 '24 21:07 bors

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.

rust-log-analyzer avatar Jul 29 '24 22:07 rust-log-analyzer

CI finally pass; someone to try and run crater?

ChayimFriedman2 avatar Jul 30 '24 00:07 ChayimFriedman2

@bors try

tgross35 avatar Jul 30 '24 01:07 tgross35

:hourglass: Trying commit cc72a92133f6fc5b779a9ce9a9931d73d3e6d31c with merge 09146510cdb33d15474a35fde290187a88b1cf35...

bors avatar Jul 30 '24 01:07 bors

:sunny: Try build successful - checks-actions Build commit: 09146510cdb33d15474a35fde290187a88b1cf35 (09146510cdb33d15474a35fde290187a88b1cf35)

bors avatar Jul 30 '24 03:07 bors

@craterbot check

oli-obk avatar Jul 30 '24 05:07 oli-obk

: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

craterbot avatar Jul 30 '24 05:07 craterbot

:construction: Experiment pr-128351 is now running

:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

craterbot avatar Jul 30 '24 05:07 craterbot

: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

craterbot avatar Aug 01 '24 07:08 craterbot

@bors try

jieyouxu avatar Aug 04 '24 04:08 jieyouxu

:hourglass: Trying commit 89e1d44bfa4cbed63d21244bd54b87b168916d8d with merge 16d823b1c168ce52c66ccc00dfd686f775a45c65...

bors avatar Aug 04 '24 04:08 bors

:sunny: Try build successful - checks-actions Build commit: 16d823b1c168ce52c66ccc00dfd686f775a45c65 (16d823b1c168ce52c66ccc00dfd686f775a45c65)

bors avatar Aug 04 '24 06:08 bors

@craterbot check

jieyouxu avatar Aug 04 '24 06:08 jieyouxu

: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 avatar Aug 04 '24 06:08 craterbot

@craterbot abort

jieyouxu avatar Aug 04 '24 06:08 jieyouxu

:wastebasket: Experiment pr-128351-1 deleted!

:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

craterbot avatar Aug 04 '24 06:08 craterbot

@craterbot check crates=https://crater-reports.s3.amazonaws.com/pr-128351/retry-regressed-list.txt

jieyouxu avatar Aug 04 '24 07:08 jieyouxu

: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 avatar Aug 04 '24 07:08 craterbot

@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.

compiler-errors avatar Aug 04 '24 17:08 compiler-errors

: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

craterbot avatar Aug 04 '24 17:08 craterbot