[INFO] cloning repository https://github.com/perlindgren/rtic_rw_api_experiment
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/perlindgren/rtic_rw_api_experiment" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fperlindgren%2Frtic_rw_api_experiment", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fperlindgren%2Frtic_rw_api_experiment'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6e8b81d315f6ce96c87fefc53dcacfe201a7669f
[INFO] checking perlindgren/rtic_rw_api_experiment against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6+rustflags=-Znext-solver=coherence for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fperlindgren%2Frtic_rw_api_experiment" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/perlindgren/rtic_rw_api_experiment
[INFO] finished tweaking git repo https://github.com/perlindgren/rtic_rw_api_experiment
[INFO] tweaked toml for git repo https://github.com/perlindgren/rtic_rw_api_experiment written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/perlindgren/rtic_rw_api_experiment on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/perlindgren/rtic_rw_api_experiment already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46
[INFO] running `Command { std: "docker" "start" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Znext-solver=coherence" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking rtic-rw v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mutex_rw_demote.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut mutex_rw2 = TestMutexRW2 {
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mutex_rw.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let mut mutex_rw = TestMutexRW {
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> examples/mutex_rw_demote.rs:56:17
[INFO] [stdout]    |
[INFO] [stdout] 56 |             let p = &mut *data_inner;
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> examples/mutex_rw_demote.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let x = mutex_rw2.read_lock(|data| {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `mutex_rw` as mutable because it is also borrowed as immutable
[INFO] [stdout]   --> examples/mutex_read_write.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let (x, y) = mutex_rw.read_lock(|data| {
[INFO] [stdout]    |                  -------- --------- ^^^^^^ mutable borrow occurs here
[INFO] [stdout]    |                  |        |
[INFO] [stdout]    |                  |        immutable borrow later used by call
[INFO] [stdout]    |                  immutable borrow occurs here
[INFO] [stdout] 16 |         println!("Read lock: x={}, y={}, z={}", data.x, data.y, data.z);
[INFO] [stdout] 17 |         let y = mutex_rw.write_lock(|data| {
[INFO] [stdout]    |                 -------- second borrow occurs due to use of `mutex_rw` in closure
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `mutex_rw` as mutable because it is also borrowed as immutable
[INFO] [stdout]   --> examples/mutex_rw_w_r.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |       mutex_rw.write_lock(|data| {
[INFO] [stdout]    |       ^        ---------- ------ immutable borrow occurs here
[INFO] [stdout]    |       |        |
[INFO] [stdout]    |  _____|        immutable borrow later used by call
[INFO] [stdout]    | |
[INFO] [stdout] 16 | |         data.x += 1;
[INFO] [stdout] 17 | |         println!("Write lock: x={}, y={}, z={}", data.x, data.y, data.z);
[INFO] [stdout] 18 | |         mutex_rw.read_lock(|data_inner| {
[INFO] [stdout]    | |         -------- first borrow occurs due to use of `mutex_rw` in closure
[INFO] [stdout] ...  |
[INFO] [stdout] 23 | |         });
[INFO] [stdout] 24 | |     });
[INFO] [stdout]    | |______^ mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rtic-rw` (example "mutex_read_write") due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `rtic-rw` (example "mutex_rw_w_r") due to 1 previous error
[INFO] [stdout] error[E0502]: cannot borrow `mutex_rw` as mutable because it is also borrowed as immutable
[INFO] [stdout]   --> examples/mutex_rw_r_w.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mutex_rw.read_lock(|data| {
[INFO] [stdout]    |     -------- --------- ^^^^^^ mutable borrow occurs here
[INFO] [stdout]    |     |        |
[INFO] [stdout]    |     |        immutable borrow later used by call
[INFO] [stdout]    |     immutable borrow occurs here
[INFO] [stdout] 16 |         println!("Read lock: x={}, y={}, z={}", data.x, data.y, data.z);
[INFO] [stdout] 17 |         mutex_rw.write_lock(|data_inner| {
[INFO] [stdout]    |         -------- second borrow occurs due to use of `mutex_rw` in closure
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rtic-rw` (example "mutex_rw_r_w") due to 1 previous error
[INFO] [stdout] error[E0499]: cannot borrow `mutex` as mutable more than once at a time
[INFO] [stdout]   --> examples/mutex_nesting.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |       let d = mutex.lock(|data| {
[INFO] [stdout]    |               ^     ---- ------ first mutable borrow occurs here
[INFO] [stdout]    |               |     |
[INFO] [stdout]    |  _____________|     first borrow later used by call
[INFO] [stdout]    | |
[INFO] [stdout] 16 | |         println!("Read lock: x={}, y={}, z={}", data.x, data.y, data.z);
[INFO] [stdout] 17 | |         let d = mutex.lock(|data| {
[INFO] [stdout]    | |                 ----- first borrow occurs due to use of `mutex` in closure
[INFO] [stdout] 18 | |             data.x += 1;
[INFO] [stdout] ...  |
[INFO] [stdout] 21 | |         *data
[INFO] [stdout] 22 | |     });
[INFO] [stdout]    | |______^ second mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `mutex` as mutable more than once at a time
[INFO] [stdout]   --> examples/mutex_nesting.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let d = mutex.lock(|data| {
[INFO] [stdout]    |             ----- ---- ^^^^^^ second mutable borrow occurs here
[INFO] [stdout]    |             |     |
[INFO] [stdout]    |             |     first borrow later used by call
[INFO] [stdout]    |             first mutable borrow occurs here
[INFO] [stdout] 16 |         println!("Read lock: x={}, y={}, z={}", data.x, data.y, data.z);
[INFO] [stdout] 17 |         let d = mutex.lock(|data| {
[INFO] [stdout]    |                 ----- second borrow occurs due to use of `mutex` in closure
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]   --> examples/mutex_nesting.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let d = mutex.lock(|data| {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0499`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rtic-rw` (example "mutex_nesting") due to 2 previous errors; 1 warning emitted
[INFO] [stdout] error: lifetime may not live long enough
[INFO] [stdout]   --> examples/mutex_leak.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let d = mutex.lock(|data| {
[INFO] [stdout]    |                         ----- return type of closure is &'2 mut NonAtomicU32
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         has type `&'1 mut NonAtomicU32`
[INFO] [stdout] ...
[INFO] [stdout] 18 |         data
[INFO] [stdout]    |         ^^^^ returning this value requires that `'1` must outlive `'2`
[INFO] [stdout]    |
[INFO] [stdout] help: dereference the return value
[INFO] [stdout]    |
[INFO] [stdout] 18 |         *data
[INFO] [stdout]    |         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rtic-rw` (example "mutex_leak") due to 1 previous error
[INFO] running `Command { std: "docker" "inspect" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46", kill_on_drop: false }`
[INFO] [stdout] de43a3d8e675c0315f9a86635d6853062a235ee5ac5d818fbddb6f1ac8444f46
