[INFO] cloning repository https://github.com/romain-mg/rust-memory-allocator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/romain-mg/rust-memory-allocator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fromain-mg%2Frust-memory-allocator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fromain-mg%2Frust-memory-allocator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3d2b96b34d6225e8cf7afaafbdd6307431b770f4 [INFO] testing romain-mg/rust-memory-allocator against master#350d0ef0ec0493e6d21cfb265cb8211a0e74d766 for pr-145330-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fromain-mg%2Frust-memory-allocator" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/romain-mg/rust-memory-allocator [INFO] finished tweaking git repo https://github.com/romain-mg/rust-memory-allocator [INFO] tweaked toml for git repo https://github.com/romain-mg/rust-memory-allocator written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/romain-mg/rust-memory-allocator on toolchain 350d0ef0ec0493e6d21cfb265cb8211a0e74d766 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/romain-mg/rust-memory-allocator 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" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded redox_syscall v0.5.12 [INFO] [stderr] Downloaded proc-macro2 v1.0.95 [INFO] [stderr] Downloaded serial_test_derive v3.2.0 [INFO] [stderr] Downloaded serial_test v3.2.0 [INFO] [stderr] Downloaded scc v2.3.4 [INFO] [stderr] Downloaded bitflags v2.9.1 [INFO] [stderr] Downloaded smallvec v1.15.0 [INFO] [stderr] Downloaded sdd v3.0.8 [INFO] [stderr] Downloaded syn v2.0.101 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 17290ad6fb4953a259dca24035ca39029bb84578cd11712895a669a82a061dd1 [INFO] running `Command { std: "docker" "start" "-a" "17290ad6fb4953a259dca24035ca39029bb84578cd11712895a669a82a061dd1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "17290ad6fb4953a259dca24035ca39029bb84578cd11712895a669a82a061dd1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "17290ad6fb4953a259dca24035ca39029bb84578cd11712895a669a82a061dd1", kill_on_drop: false }` [INFO] [stdout] 17290ad6fb4953a259dca24035ca39029bb84578cd11712895a669a82a061dd1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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" "RUSTDOCFLAGS=--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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0cd4162aab433d994bcfda20963060ba506991c577056caca52a22c693dbec20 [INFO] running `Command { std: "docker" "start" "-a" "0cd4162aab433d994bcfda20963060ba506991c577056caca52a22c693dbec20", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling libc v0.2.172 [INFO] [stderr] Compiling futures-sink v0.3.31 [INFO] [stderr] Compiling futures-core v0.3.31 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling smallvec v1.15.0 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling sdd v3.0.8 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling scc v2.3.4 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling parking_lot v0.12.3 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling serial_test_derive v3.2.0 [INFO] [stderr] Compiling serial_test v3.2.0 [INFO] [stderr] Compiling mm_alloc v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `c_void`, `can_err_mask_t`, and `listen` [INFO] [stdout] --> src/mm_alloc.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use libc::{c_void, can_err_mask_t, listen, sbrk}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp::min` [INFO] [stdout] --> src/mm_alloc.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp::min; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `null` and `self` [INFO] [stdout] --> src/mm_alloc.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | ptr::{self, copy, null, null_mut}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | if ROOT == null_mut() { [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | pub unsafe fn mm_malloc(size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:35:32 [INFO] [stdout] | [INFO] [stdout] 35 | let raw_root_pointer = sbrk(bits_to_allocate as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:40:22 [INFO] [stdout] | [INFO] [stdout] 40 | return_ptr = root_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | / root_pointer.write(MemoryHeader { [INFO] [stdout] 42 | | prev: null_mut(), [INFO] [stdout] 43 | | next: null_mut(), [INFO] [stdout] 44 | | size: size, [INFO] [stdout] 45 | | free: false, [INFO] [stdout] 46 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 47 | | }); [INFO] [stdout] | |__________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | ROOT = root_pointer; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:52:24 [INFO] [stdout] | [INFO] [stdout] 52 | let mut curr = ROOT; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:38 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:70 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:57:20 [INFO] [stdout] | [INFO] [stdout] 57 | curr = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:61:33 [INFO] [stdout] | [INFO] [stdout] 61 | let block_pointer = sbrk(bits_to_allocate as isize) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:65:26 [INFO] [stdout] | [INFO] [stdout] 65 | return_ptr = block_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | / block_pointer.write(MemoryHeader { [INFO] [stdout] 67 | | prev, [INFO] [stdout] 68 | | next: null_mut(), [INFO] [stdout] 69 | | size: aligned_size, [INFO] [stdout] 70 | | free: false, [INFO] [stdout] 71 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 72 | | }); [INFO] [stdout] | |______________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | (*prev).next = block_pointer; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | (*curr).free = false; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:78:26 [INFO] [stdout] | [INFO] [stdout] 78 | return_ptr = curr.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:80:16 [INFO] [stdout] | [INFO] [stdout] 80 | if (*curr).size > aligned_size + SIZE_OF_MEMORY_HEADER + ONE_BYTE { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:81:36 [INFO] [stdout] | [INFO] [stdout] 81 | let current_next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] 86 | | .add(aligned_size / ONE_BYTE); [INFO] [stdout] | |_________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] | |________________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | / new_next.write(MemoryHeader { [INFO] [stdout] 89 | | prev: curr, [INFO] [stdout] 90 | | next: current_next, [INFO] [stdout] 91 | | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] 92 | | free: true, [INFO] [stdout] 93 | | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] 94 | | }); [INFO] [stdout] | |__________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:91:27 [INFO] [stdout] | [INFO] [stdout] 91 | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:93:28 [INFO] [stdout] | [INFO] [stdout] 93 | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | (*curr).next = new_next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:57 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:102:19 [INFO] [stdout] | [INFO] [stdout] 102 | let ptr = return_ptr.add(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | *ptr = 0; [INFO] [stdout] | ^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:109:22 [INFO] [stdout] | [INFO] [stdout] 109 | let heap_break = sbrk(0) as *mut u8; [INFO] [stdout] | ^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:107:1 [INFO] [stdout] | [INFO] [stdout] 107 | pub unsafe fn mm_free(ptr: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:113:22 [INFO] [stdout] | [INFO] [stdout] 113 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:115:8 [INFO] [stdout] | [INFO] [stdout] 115 | if (*header_ptr).magic != expected_magic { [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:119:22 [INFO] [stdout] | [INFO] [stdout] 119 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | (*header_ptr).free = true; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:123:20 [INFO] [stdout] | [INFO] [stdout] 123 | let mut next = (*header_ptr).next; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:124:30 [INFO] [stdout] | [INFO] [stdout] 124 | while !next.is_null() && (*next).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:31 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:127:16 [INFO] [stdout] | [INFO] [stdout] 127 | next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | let mut prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:134:30 [INFO] [stdout] | [INFO] [stdout] 134 | while !prev.is_null() && (*prev).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:25 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:139:16 [INFO] [stdout] | [INFO] [stdout] 139 | prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `return_ptr` is never read [INFO] [stdout] --> src/mm_alloc.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | let mut return_ptr = null_mut(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | return mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:143:1 [INFO] [stdout] | [INFO] [stdout] 143 | pub unsafe fn mm_realloc(ptr: *mut u8, size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_free` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | mm_free(ptr); [INFO] [stdout] | ^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:153:26 [INFO] [stdout] | [INFO] [stdout] 153 | let ptr_header = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:154:27 [INFO] [stdout] | [INFO] [stdout] 154 | let former_size = (*ptr_header).size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:156:26 [INFO] [stdout] | [INFO] [stdout] 156 | return_ptr = mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | copy(ptr, return_ptr, former_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:159:13 [INFO] [stdout] | [INFO] [stdout] 159 | (*ptr_header).size = size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.90s [INFO] running `Command { std: "docker" "inspect" "0cd4162aab433d994bcfda20963060ba506991c577056caca52a22c693dbec20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0cd4162aab433d994bcfda20963060ba506991c577056caca52a22c693dbec20", kill_on_drop: false }` [INFO] [stdout] 0cd4162aab433d994bcfda20963060ba506991c577056caca52a22c693dbec20 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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" "RUSTDOCFLAGS=--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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a4eebf4e56a025e210413996c3e50dd1c5ae4c6b74f3a6e2902b158eee473433 [INFO] running `Command { std: "docker" "start" "-a" "a4eebf4e56a025e210413996c3e50dd1c5ae4c6b74f3a6e2902b158eee473433", kill_on_drop: false }` [INFO] [stdout] warning: unused imports: `c_void`, `can_err_mask_t`, and `listen` [INFO] [stdout] --> src/mm_alloc.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use libc::{c_void, can_err_mask_t, listen, sbrk}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp::min` [INFO] [stdout] --> src/mm_alloc.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp::min; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `null` and `self` [INFO] [stdout] --> src/mm_alloc.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | ptr::{self, copy, null, null_mut}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | if ROOT == null_mut() { [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | pub unsafe fn mm_malloc(size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:35:32 [INFO] [stdout] | [INFO] [stdout] 35 | let raw_root_pointer = sbrk(bits_to_allocate as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:40:22 [INFO] [stdout] | [INFO] [stdout] 40 | return_ptr = root_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | / root_pointer.write(MemoryHeader { [INFO] [stdout] 42 | | prev: null_mut(), [INFO] [stdout] 43 | | next: null_mut(), [INFO] [stdout] 44 | | size: size, [INFO] [stdout] 45 | | free: false, [INFO] [stdout] 46 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 47 | | }); [INFO] [stdout] | |__________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | ROOT = root_pointer; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:52:24 [INFO] [stdout] | [INFO] [stdout] 52 | let mut curr = ROOT; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:38 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:70 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:57:20 [INFO] [stdout] | [INFO] [stdout] 57 | curr = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:61:33 [INFO] [stdout] | [INFO] [stdout] 61 | let block_pointer = sbrk(bits_to_allocate as isize) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:65:26 [INFO] [stdout] | [INFO] [stdout] 65 | return_ptr = block_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | / block_pointer.write(MemoryHeader { [INFO] [stdout] 67 | | prev, [INFO] [stdout] 68 | | next: null_mut(), [INFO] [stdout] 69 | | size: aligned_size, [INFO] [stdout] 70 | | free: false, [INFO] [stdout] 71 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 72 | | }); [INFO] [stdout] | |______________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | (*prev).next = block_pointer; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | (*curr).free = false; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:78:26 [INFO] [stdout] | [INFO] [stdout] 78 | return_ptr = curr.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:80:16 [INFO] [stdout] | [INFO] [stdout] 80 | if (*curr).size > aligned_size + SIZE_OF_MEMORY_HEADER + ONE_BYTE { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:81:36 [INFO] [stdout] | [INFO] [stdout] 81 | let current_next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] 86 | | .add(aligned_size / ONE_BYTE); [INFO] [stdout] | |_________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] | |________________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | / new_next.write(MemoryHeader { [INFO] [stdout] 89 | | prev: curr, [INFO] [stdout] 90 | | next: current_next, [INFO] [stdout] 91 | | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] 92 | | free: true, [INFO] [stdout] 93 | | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] 94 | | }); [INFO] [stdout] | |__________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:91:27 [INFO] [stdout] | [INFO] [stdout] 91 | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:93:28 [INFO] [stdout] | [INFO] [stdout] 93 | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | (*curr).next = new_next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:57 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:102:19 [INFO] [stdout] | [INFO] [stdout] 102 | let ptr = return_ptr.add(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | *ptr = 0; [INFO] [stdout] | ^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:109:22 [INFO] [stdout] | [INFO] [stdout] 109 | let heap_break = sbrk(0) as *mut u8; [INFO] [stdout] | ^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:107:1 [INFO] [stdout] | [INFO] [stdout] 107 | pub unsafe fn mm_free(ptr: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:113:22 [INFO] [stdout] | [INFO] [stdout] 113 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:115:8 [INFO] [stdout] | [INFO] [stdout] 115 | if (*header_ptr).magic != expected_magic { [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:119:22 [INFO] [stdout] | [INFO] [stdout] 119 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | (*header_ptr).free = true; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:123:20 [INFO] [stdout] | [INFO] [stdout] 123 | let mut next = (*header_ptr).next; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:124:30 [INFO] [stdout] | [INFO] [stdout] 124 | while !next.is_null() && (*next).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:31 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:127:16 [INFO] [stdout] | [INFO] [stdout] 127 | next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | let mut prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:134:30 [INFO] [stdout] | [INFO] [stdout] 134 | while !prev.is_null() && (*prev).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:25 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:139:16 [INFO] [stdout] | [INFO] [stdout] 139 | prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `return_ptr` is never read [INFO] [stdout] --> src/mm_alloc.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | let mut return_ptr = null_mut(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | return mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:143:1 [INFO] [stdout] | [INFO] [stdout] 143 | pub unsafe fn mm_realloc(ptr: *mut u8, size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_free` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | mm_free(ptr); [INFO] [stdout] | ^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling mm_alloc v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:153:26 [INFO] [stdout] | [INFO] [stdout] 153 | let ptr_header = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:154:27 [INFO] [stdout] | [INFO] [stdout] 154 | let former_size = (*ptr_header).size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:156:26 [INFO] [stdout] | [INFO] [stdout] 156 | return_ptr = mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | copy(ptr, return_ptr, former_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:159:13 [INFO] [stdout] | [INFO] [stdout] 159 | (*ptr_header).size = size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stdout] warning: unused imports: `c_void`, `can_err_mask_t`, and `listen` [INFO] [stdout] --> src/mm_alloc.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | use libc::{c_void, can_err_mask_t, listen, sbrk}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp::min` [INFO] [stdout] --> src/mm_alloc.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp::min; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `null` and `self` [INFO] [stdout] --> src/mm_alloc.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | ptr::{self, copy, null, null_mut}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | if ROOT == null_mut() { [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | pub unsafe fn mm_malloc(size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:35:32 [INFO] [stdout] | [INFO] [stdout] 35 | let raw_root_pointer = sbrk(bits_to_allocate as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:40:22 [INFO] [stdout] | [INFO] [stdout] 40 | return_ptr = root_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | / root_pointer.write(MemoryHeader { [INFO] [stdout] 42 | | prev: null_mut(), [INFO] [stdout] 43 | | next: null_mut(), [INFO] [stdout] 44 | | size: size, [INFO] [stdout] 45 | | free: false, [INFO] [stdout] 46 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 47 | | }); [INFO] [stdout] | |__________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | ROOT = root_pointer; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:52:24 [INFO] [stdout] | [INFO] [stdout] 52 | let mut curr = ROOT; [INFO] [stdout] | ^^^^ use of mutable static [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:38 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:55:70 [INFO] [stdout] | [INFO] [stdout] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:57:20 [INFO] [stdout] | [INFO] [stdout] 57 | curr = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:61:33 [INFO] [stdout] | [INFO] [stdout] 61 | let block_pointer = sbrk(bits_to_allocate as isize) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:65:26 [INFO] [stdout] | [INFO] [stdout] 65 | return_ptr = block_pointer.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | / block_pointer.write(MemoryHeader { [INFO] [stdout] 67 | | prev, [INFO] [stdout] 68 | | next: null_mut(), [INFO] [stdout] 69 | | size: aligned_size, [INFO] [stdout] 70 | | free: false, [INFO] [stdout] 71 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stdout] 72 | | }); [INFO] [stdout] | |______________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | (*prev).next = block_pointer; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | (*curr).free = false; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:78:26 [INFO] [stdout] | [INFO] [stdout] 78 | return_ptr = curr.add(1) as *mut u8; [INFO] [stdout] | ^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:80:16 [INFO] [stdout] | [INFO] [stdout] 80 | if (*curr).size > aligned_size + SIZE_OF_MEMORY_HEADER + ONE_BYTE { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:81:36 [INFO] [stdout] | [INFO] [stdout] 81 | let current_next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] 86 | | .add(aligned_size / ONE_BYTE); [INFO] [stdout] | |_________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:84:42 [INFO] [stdout] | [INFO] [stdout] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stdout] | |________________________________________________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | / new_next.write(MemoryHeader { [INFO] [stdout] 89 | | prev: curr, [INFO] [stdout] 90 | | next: current_next, [INFO] [stdout] 91 | | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] 92 | | free: true, [INFO] [stdout] 93 | | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] 94 | | }); [INFO] [stdout] | |__________________^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:91:27 [INFO] [stdout] | [INFO] [stdout] 91 | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:93:28 [INFO] [stdout] | [INFO] [stdout] 93 | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | (*curr).next = new_next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:96:57 [INFO] [stdout] | [INFO] [stdout] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stdout] | ^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:102:19 [INFO] [stdout] | [INFO] [stdout] 102 | let ptr = return_ptr.add(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | *ptr = 0; [INFO] [stdout] | ^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:109:22 [INFO] [stdout] | [INFO] [stdout] 109 | let heap_break = sbrk(0) as *mut u8; [INFO] [stdout] | ^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:107:1 [INFO] [stdout] | [INFO] [stdout] 107 | pub unsafe fn mm_free(ptr: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:113:22 [INFO] [stdout] | [INFO] [stdout] 113 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:115:8 [INFO] [stdout] | [INFO] [stdout] 115 | if (*header_ptr).magic != expected_magic { [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:119:22 [INFO] [stdout] | [INFO] [stdout] 119 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | (*header_ptr).free = true; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:123:20 [INFO] [stdout] | [INFO] [stdout] 123 | let mut next = (*header_ptr).next; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:124:30 [INFO] [stdout] | [INFO] [stdout] 124 | while !next.is_null() && (*next).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:126:31 [INFO] [stdout] | [INFO] [stdout] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:127:16 [INFO] [stdout] | [INFO] [stdout] 127 | next = (*curr).next; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | let mut prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:134:30 [INFO] [stdout] | [INFO] [stdout] 134 | while !prev.is_null() && (*prev).free { [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:135:25 [INFO] [stdout] | [INFO] [stdout] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | (*curr).next = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | (*curr).prev = null_mut(); [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:139:16 [INFO] [stdout] | [INFO] [stdout] 139 | prev = (*curr).prev; [INFO] [stdout] | ^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `return_ptr` is never read [INFO] [stdout] --> src/mm_alloc.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | let mut return_ptr = null_mut(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | return mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> src/mm_alloc.rs:143:1 [INFO] [stdout] | [INFO] [stdout] 143 | pub unsafe fn mm_realloc(ptr: *mut u8, size: usize) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_free` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | mm_free(ptr); [INFO] [stdout] | ^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:153:26 [INFO] [stdout] | [INFO] [stdout] 153 | let ptr_header = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:154:27 [INFO] [stdout] | [INFO] [stdout] 154 | let former_size = (*ptr_header).size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:156:26 [INFO] [stdout] | [INFO] [stdout] 156 | return_ptr = mm_malloc(size); [INFO] [stdout] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy` is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | copy(ptr, return_ptr, former_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> src/mm_alloc.rs:159:13 [INFO] [stdout] | [INFO] [stdout] 159 | (*ptr_header).size = size; [INFO] [stdout] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.58s [INFO] running `Command { std: "docker" "inspect" "a4eebf4e56a025e210413996c3e50dd1c5ae4c6b74f3a6e2902b158eee473433", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a4eebf4e56a025e210413996c3e50dd1c5ae4c6b74f3a6e2902b158eee473433", kill_on_drop: false }` [INFO] [stdout] a4eebf4e56a025e210413996c3e50dd1c5ae4c6b74f3a6e2902b158eee473433 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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" "RUSTDOCFLAGS=--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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] e6dc6ff75ef446793980b9137f6fd4913f4e000789ba28b65547d58814ba57ba [INFO] running `Command { std: "docker" "start" "-a" "e6dc6ff75ef446793980b9137f6fd4913f4e000789ba28b65547d58814ba57ba", kill_on_drop: false }` [INFO] [stderr] warning: unused imports: `c_void`, `can_err_mask_t`, and `listen` [INFO] [stderr] --> src/mm_alloc.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | use libc::{c_void, can_err_mask_t, listen, sbrk}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::min` [INFO] [stderr] --> src/mm_alloc.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::min; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `null` and `self` [INFO] [stderr] --> src/mm_alloc.rs:5:11 [INFO] [stderr] | [INFO] [stderr] 5 | ptr::{self, copy, null, null_mut}, [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:34:8 [INFO] [stderr] | [INFO] [stderr] 34 | if ROOT == null_mut() { [INFO] [stderr] | ^^^^ use of mutable static [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> src/mm_alloc.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | pub unsafe fn mm_malloc(size: usize) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | let raw_root_pointer = sbrk(bits_to_allocate as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:40:22 [INFO] [stderr] | [INFO] [stderr] 40 | return_ptr = root_pointer.add(1) as *mut u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / root_pointer.write(MemoryHeader { [INFO] [stderr] 42 | | prev: null_mut(), [INFO] [stderr] 43 | | next: null_mut(), [INFO] [stderr] 44 | | size: size, [INFO] [stderr] 45 | | free: false, [INFO] [stderr] 46 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stderr] 47 | | }); [INFO] [stderr] | |__________^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | ROOT = root_pointer; [INFO] [stderr] | ^^^^ use of mutable static [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: use of mutable static is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:52:24 [INFO] [stderr] | [INFO] [stderr] 52 | let mut curr = ROOT; [INFO] [stderr] | ^^^^ use of mutable static [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:55:38 [INFO] [stderr] | [INFO] [stderr] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:55:70 [INFO] [stderr] | [INFO] [stderr] 55 | while curr != null_mut() && ((*curr).size < aligned_size || !(*curr).free) { [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:57:20 [INFO] [stderr] | [INFO] [stderr] 57 | curr = (*curr).next; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | let block_pointer = sbrk(bits_to_allocate as isize) as *mut MemoryHeader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | return_ptr = block_pointer.add(1) as *mut u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | / block_pointer.write(MemoryHeader { [INFO] [stderr] 67 | | prev, [INFO] [stderr] 68 | | next: null_mut(), [INFO] [stderr] 69 | | size: aligned_size, [INFO] [stderr] 70 | | free: false, [INFO] [stderr] 71 | | magic: return_ptr as isize ^ MAGIC, [INFO] [stderr] 72 | | }); [INFO] [stderr] | |______________^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | (*prev).next = block_pointer; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | (*curr).free = false; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:78:26 [INFO] [stderr] | [INFO] [stderr] 78 | return_ptr = curr.add(1) as *mut u8; [INFO] [stderr] | ^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | if (*curr).size > aligned_size + SIZE_OF_MEMORY_HEADER + ONE_BYTE { [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:81:36 [INFO] [stderr] | [INFO] [stderr] 81 | let current_next = (*curr).next; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:84:42 [INFO] [stderr] | [INFO] [stderr] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stderr] 86 | | .add(aligned_size / ONE_BYTE); [INFO] [stderr] | |_________________________________________________^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:84:42 [INFO] [stderr] | [INFO] [stderr] 84 | let new_next_as_u8_ptr = curr_as_u8_ptr [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 85 | | .add(SIZE_OF_MEMORY_HEADER_IN_BYTES) [INFO] [stderr] | |________________________________________________________^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::write` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | / new_next.write(MemoryHeader { [INFO] [stderr] 89 | | prev: curr, [INFO] [stderr] 90 | | next: current_next, [INFO] [stderr] 91 | | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stderr] 92 | | free: true, [INFO] [stderr] 93 | | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stderr] 94 | | }); [INFO] [stderr] | |__________________^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:91:27 [INFO] [stderr] | [INFO] [stderr] 91 | size: (*curr).size - (aligned_size + SIZE_OF_MEMORY_HEADER), [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | magic: new_next.add(1) as isize ^ MAGIC, [INFO] [stderr] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:95:17 [INFO] [stderr] | [INFO] [stderr] 95 | (*curr).next = new_next; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:96:57 [INFO] [stderr] | [INFO] [stderr] 96 | (*curr).size -= SIZE_OF_MEMORY_HEADER + (*new_next).size [INFO] [stderr] | ^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:102:19 [INFO] [stderr] | [INFO] [stderr] 102 | let ptr = return_ptr.add(i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | *ptr = 0; [INFO] [stderr] | ^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::sbrk` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:109:22 [INFO] [stderr] | [INFO] [stderr] 109 | let heap_break = sbrk(0) as *mut u8; [INFO] [stderr] | ^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> src/mm_alloc.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | pub unsafe fn mm_free(ptr: *mut u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:113:22 [INFO] [stderr] | [INFO] [stderr] 113 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:115:8 [INFO] [stderr] | [INFO] [stderr] 115 | if (*header_ptr).magic != expected_magic { [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:119:22 [INFO] [stderr] | [INFO] [stderr] 119 | let header_ptr = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | (*header_ptr).free = true; [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:123:20 [INFO] [stderr] | [INFO] [stderr] 123 | let mut next = (*header_ptr).next; [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:124:30 [INFO] [stderr] | [INFO] [stderr] 124 | while !next.is_null() && (*next).free { [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:126:31 [INFO] [stderr] | [INFO] [stderr] 126 | (*header_ptr).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:127:16 [INFO] [stderr] | [INFO] [stderr] 127 | next = (*curr).next; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | (*curr).prev = null_mut(); [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | (*curr).next = null_mut(); [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:133:20 [INFO] [stderr] | [INFO] [stderr] 133 | let mut prev = (*curr).prev; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:134:30 [INFO] [stderr] | [INFO] [stderr] 134 | while !prev.is_null() && (*prev).free { [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:135:25 [INFO] [stderr] | [INFO] [stderr] 135 | (*prev).size += (*curr).size + SIZE_OF_MEMORY_HEADER; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | (*curr).next = null_mut(); [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | (*curr).prev = null_mut(); [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:139:16 [INFO] [stderr] | [INFO] [stderr] 139 | prev = (*curr).prev; [INFO] [stderr] | ^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning: value assigned to `return_ptr` is never read [INFO] [stderr] --> src/mm_alloc.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | let mut return_ptr = null_mut(); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:147:16 [INFO] [stderr] | [INFO] [stderr] 147 | return mm_malloc(size); [INFO] [stderr] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> src/mm_alloc.rs:143:1 [INFO] [stderr] | [INFO] [stderr] 143 | pub unsafe fn mm_realloc(ptr: *mut u8, size: usize) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `mm_alloc::mm_free` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | mm_free(ptr); [INFO] [stderr] | ^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:153:26 [INFO] [stderr] | [INFO] [stderr] 153 | let ptr_header = ptr.sub(SIZE_OF_MEMORY_HEADER_IN_BYTES) as *mut MemoryHeader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:154:27 [INFO] [stderr] | [INFO] [stderr] 154 | let former_size = (*ptr_header).size; [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `mm_alloc::mm_malloc` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:156:26 [INFO] [stderr] | [INFO] [stderr] 156 | return_ptr = mm_malloc(size); [INFO] [stderr] | ^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::copy` is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | copy(ptr, return_ptr, former_size); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> src/mm_alloc.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | (*ptr_header).size = size; [INFO] [stderr] | ^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0133`. [INFO] [stderr] warning: `mm_alloc` (lib) generated 57 warnings (run `cargo fix --lib -p mm_alloc` to apply 6 suggestions) [INFO] [stderr] warning: `mm_alloc` (lib test) generated 57 warnings (57 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mm_alloc-bb1640eb1d9042fd) [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; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/basic.rs (/opt/rustwide/target/debug/deps/basic-b104ff8034b38ec5) [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test test_free_coalescing_after_multiple_frees ... ok [INFO] [stdout] test test_free_then_realloc ... ok [INFO] [stdout] test test_free_null ... ok [INFO] [stdout] test test_malloc_2_times ... ok [INFO] [stdout] test test_malloc_2_times_without_initialization ... ok [INFO] [stdout] test test_malloc_basic ... ok [INFO] [stdout] test test_malloc_split_space ... ok [INFO] [stdout] test test_malloc_zero_size ... ok [INFO] [stdout] test test_multiple_small_allocations ... ok [INFO] [stdout] test test_realloc_expand ... ok [INFO] [stdout] test test_realloc_from_null ... ok [INFO] [stdout] test test_realloc_to_zero ... ok [INFO] [stdout] test test_realloc_shrink ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Doc-tests mm_alloc [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; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "e6dc6ff75ef446793980b9137f6fd4913f4e000789ba28b65547d58814ba57ba", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e6dc6ff75ef446793980b9137f6fd4913f4e000789ba28b65547d58814ba57ba", kill_on_drop: false }` [INFO] [stdout] e6dc6ff75ef446793980b9137f6fd4913f4e000789ba28b65547d58814ba57ba