[INFO] fetching crate pulse 0.5.3... [INFO] testing pulse-0.5.3 against master#5d5ff84130da0d74c6ece368dbe821d8f83fa526 for pr-79296 [INFO] extracting crate pulse 0.5.3 into /workspace/builds/worker-0/source [INFO] validating manifest of crates.io crate pulse 0.5.3 on toolchain 5d5ff84130da0d74c6ece368dbe821d8f83fa526 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking crates.io crate pulse 0.5.3 [INFO] finished tweaking crates.io crate pulse 0.5.3 [INFO] tweaked toml for crates.io crate pulse 0.5.3 written to /workspace/builds/worker-0/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 10c1c3c622c46d3fb141602e63bd78eeafaebbc1ee06f5c6148c347e944438cd [INFO] running `Command { std: "docker" "start" "-a" "10c1c3c622c46d3fb141602e63bd78eeafaebbc1ee06f5c6148c347e944438cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "10c1c3c622c46d3fb141602e63bd78eeafaebbc1ee06f5c6148c347e944438cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "10c1c3c622c46d3fb141602e63bd78eeafaebbc1ee06f5c6148c347e944438cd", kill_on_drop: false }` [INFO] [stdout] 10c1c3c622c46d3fb141602e63bd78eeafaebbc1ee06f5c6148c347e944438cd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a09056a86a50bd31507c4c1db5d3dd3c02d9cf34702b3094f48b28aa6d81eb61 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "a09056a86a50bd31507c4c1db5d3dd3c02d9cf34702b3094f48b28aa6d81eb61", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.80 [INFO] [stderr] Compiling atom v0.3.6 [INFO] [stderr] Compiling time v0.1.44 [INFO] [stderr] Compiling pulse v0.5.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/lib.rs:543:1 [INFO] [stdout] | [INFO] [stdout] 543 | /// The TLS scheduler [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | Callback(Box), [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn FnBox` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:544:48 [INFO] [stdout] | [INFO] [stdout] 544 | thread_local!(static SCHED: RefCell>> = RefCell::new(Some(Box::new(ThreadScheduler)))); [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:548:35 [INFO] [stdout] | [INFO] [stdout] 548 | fn take_scheduler() -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:549:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 549 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:34 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:60 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:562:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 562 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:43 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:69 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::park_timeout_ms`: replaced by `std::thread::park_timeout` [INFO] [stdout] --> src/lib.rs:530:17 [INFO] [stdout] | [INFO] [stdout] 530 | thread::park_timeout_ms((end - now) as u32); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 11 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.82s [INFO] running `Command { std: "docker" "inspect" "a09056a86a50bd31507c4c1db5d3dd3c02d9cf34702b3094f48b28aa6d81eb61", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a09056a86a50bd31507c4c1db5d3dd3c02d9cf34702b3094f48b28aa6d81eb61", kill_on_drop: false }` [INFO] [stdout] a09056a86a50bd31507c4c1db5d3dd3c02d9cf34702b3094f48b28aa6d81eb61 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] fd966eb351e0aa6dbde305829f3570e90e5e9dc2abdb03134f8bcde9862d1a3c [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "fd966eb351e0aa6dbde305829f3570e90e5e9dc2abdb03134f8bcde9862d1a3c", kill_on_drop: false }` [INFO] [stderr] Compiling pulse v0.5.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/lib.rs:543:1 [INFO] [stdout] | [INFO] [stdout] 543 | /// The TLS scheduler [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | Callback(Box), [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn FnBox` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:544:48 [INFO] [stdout] | [INFO] [stdout] 544 | thread_local!(static SCHED: RefCell>> = RefCell::new(Some(Box::new(ThreadScheduler)))); [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:548:35 [INFO] [stdout] | [INFO] [stdout] 548 | fn take_scheduler() -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:549:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 549 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:34 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:60 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:562:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 562 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:43 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:69 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::park_timeout_ms`: replaced by `std::thread::park_timeout` [INFO] [stdout] --> src/lib.rs:530:17 [INFO] [stdout] | [INFO] [stdout] 530 | thread::park_timeout_ms((end - now) as u32); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 11 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/barrier.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> tests/simple.rs:113:28 [INFO] [stdout] | [INFO] [stdout] 113 | p1.wait().unwrap();; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/select.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | thread::sleep_ms(100); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/lib.rs:543:1 [INFO] [stdout] | [INFO] [stdout] 543 | /// The TLS scheduler [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | Callback(Box), [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn FnBox` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:544:48 [INFO] [stdout] | [INFO] [stdout] 544 | thread_local!(static SCHED: RefCell>> = RefCell::new(Some(Box::new(ThreadScheduler)))); [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:548:35 [INFO] [stdout] | [INFO] [stdout] 548 | fn take_scheduler() -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:549:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 549 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:34 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:561:60 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `mem` is imported redundantly [INFO] [stdout] --> src/lib.rs:562:9 [INFO] [stdout] | [INFO] [stdout] 20 | use std::mem; [INFO] [stdout] | -------- the item `mem` is already imported here [INFO] [stdout] ... [INFO] [stdout] 562 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:43 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:569:69 [INFO] [stdout] | [INFO] [stdout] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/simple.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/simple.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/simple.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> tests/simple.rs:116:5 [INFO] [stdout] | [INFO] [stdout] 116 | thread::sleep_ms(10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::park_timeout_ms`: replaced by `std::thread::park_timeout` [INFO] [stdout] --> src/lib.rs:530:17 [INFO] [stdout] | [INFO] [stdout] 530 | thread::park_timeout_ms((end - now) as u32); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 2.70s [INFO] [stdout] warning: 11 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "fd966eb351e0aa6dbde305829f3570e90e5e9dc2abdb03134f8bcde9862d1a3c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fd966eb351e0aa6dbde305829f3570e90e5e9dc2abdb03134f8bcde9862d1a3c", kill_on_drop: false }` [INFO] [stdout] fd966eb351e0aa6dbde305829f3570e90e5e9dc2abdb03134f8bcde9862d1a3c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+5d5ff84130da0d74c6ece368dbe821d8f83fa526" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 4fb378422fa2553d976c9cf44b0c82f151acab2ca1ecf542b345f491fb95b86f [INFO] running `Command { std: "docker" "start" "-a" "4fb378422fa2553d976c9cf44b0c82f151acab2ca1ecf542b345f491fb95b86f", kill_on_drop: false }` [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/lib.rs:543:1 [INFO] [stderr] | [INFO] [stderr] 543 | /// The TLS scheduler [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:67:18 [INFO] [stderr] | [INFO] [stderr] 67 | Callback(Box), [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn FnBox` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:544:48 [INFO] [stderr] | [INFO] [stderr] 544 | thread_local!(static SCHED: RefCell>> = RefCell::new(Some(Box::new(ThreadScheduler)))); [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:548:35 [INFO] [stderr] | [INFO] [stderr] 548 | fn take_scheduler() -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: the item `mem` is imported redundantly [INFO] [stderr] --> src/lib.rs:549:9 [INFO] [stderr] | [INFO] [stderr] 20 | use std::mem; [INFO] [stderr] | -------- the item `mem` is already imported here [INFO] [stderr] ... [INFO] [stderr] 549 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:561:34 [INFO] [stderr] | [INFO] [stderr] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:561:60 [INFO] [stderr] | [INFO] [stderr] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: the item `mem` is imported redundantly [INFO] [stderr] --> src/lib.rs:562:9 [INFO] [stderr] | [INFO] [stderr] 20 | use std::mem; [INFO] [stderr] | -------- the item `mem` is already imported here [INFO] [stderr] ... [INFO] [stderr] 562 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:569:43 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:569:69 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::park_timeout_ms`: replaced by `std::thread::park_timeout` [INFO] [stderr] --> src/lib.rs:530:17 [INFO] [stderr] | [INFO] [stderr] 530 | thread::park_timeout_ms((end - now) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 11 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/lib.rs:543:1 [INFO] [stderr] | [INFO] [stderr] 543 | /// The TLS scheduler [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:67:18 [INFO] [stderr] | [INFO] [stderr] 67 | Callback(Box), [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn FnBox` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:544:48 [INFO] [stderr] | [INFO] [stderr] 544 | thread_local!(static SCHED: RefCell>> = RefCell::new(Some(Box::new(ThreadScheduler)))); [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:548:35 [INFO] [stderr] | [INFO] [stderr] 548 | fn take_scheduler() -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: the item `mem` is imported redundantly [INFO] [stderr] --> src/lib.rs:549:9 [INFO] [stderr] | [INFO] [stderr] 20 | use std::mem; [INFO] [stderr] | -------- the item `mem` is already imported here [INFO] [stderr] ... [INFO] [stderr] 549 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:561:34 [INFO] [stderr] | [INFO] [stderr] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:561:60 [INFO] [stderr] | [INFO] [stderr] 561 | pub fn swap_scheduler(sched: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: the item `mem` is imported redundantly [INFO] [stderr] --> src/lib.rs:562:9 [INFO] [stderr] | [INFO] [stderr] 20 | use std::mem; [INFO] [stderr] | -------- the item `mem` is already imported here [INFO] [stderr] ... [INFO] [stderr] 562 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:569:43 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:569:69 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn with_scheduler(f: F, sched: Box) -> Option> [INFO] [stderr] | ^^^^^^^^^ help: use `dyn`: `dyn Scheduler` [INFO] [stderr] [INFO] [stdout] [INFO] [stderr] warning: use of deprecated function `std::thread::park_timeout_ms`: replaced by `std::thread::park_timeout` [INFO] [stdout] running 0 tests [INFO] [stderr] --> src/lib.rs:530:17 [INFO] [stdout] [INFO] [stderr] | [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stderr] 530 | thread::park_timeout_ms((end - now) as u32); [INFO] [stdout] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stderr] | [INFO] [stdout] running 6 tests [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] test using_slice ... ok [INFO] [stderr] [INFO] [stdout] test dropped_barrier ... ok [INFO] [stderr] warning: 11 warnings emitted [INFO] [stdout] test using_vec ... ok [INFO] [stderr] [INFO] [stdout] test using_threads ... ok [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/select.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | thread::sleep_ms(100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: 7 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unnecessary trailing semicolon [INFO] [stderr] --> tests/simple.rs:113:28 [INFO] [stderr] | [INFO] [stderr] 113 | p1.wait().unwrap();; [INFO] [stderr] | ^ help: remove this semicolon [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/simple.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/simple.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/simple.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/simple.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: 5 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stderr] --> tests/barrier.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 1 warning emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.04s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/pulse-8dc8cc59fbd9acfa [INFO] [stderr] Running /opt/rustwide/target/debug/deps/barrier-160c3b818c82df0f [INFO] [stdout] test empty ... ok [INFO] [stdout] test barrier_clone ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/select-e074e8eeca4bb0ef [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test select_one ... ok [INFO] [stdout] test select_already_pulsed ... ok [INFO] [stdout] test select_three ... ok [INFO] [stdout] test select_barrier ... ok [INFO] [stdout] test select_thread ... ok [INFO] [stderr] Running /opt/rustwide/target/debug/deps/simple-2294e68e2c332fb3 [INFO] [stdout] test select_remove ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test cast_to_usize ... ok [INFO] [stdout] test clone ... ok [INFO] [stdout] test into_raw ... ok [INFO] [stdout] test wait ... ok [INFO] [stdout] test wake_post ... ok [INFO] [stdout] test wake_thread_spawn ... ok [INFO] [stdout] test clone_wait ... ok [INFO] [stdout] test test_timeout ... ok [INFO] [stdout] test false_positive_wake ... ok [INFO] [stdout] test dropped ... ok [INFO] [stdout] test dropped_thread ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Doc-tests pulse [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "4fb378422fa2553d976c9cf44b0c82f151acab2ca1ecf542b345f491fb95b86f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4fb378422fa2553d976c9cf44b0c82f151acab2ca1ecf542b345f491fb95b86f", kill_on_drop: false }` [INFO] [stdout] 4fb378422fa2553d976c9cf44b0c82f151acab2ca1ecf542b345f491fb95b86f