[INFO] cloning repository https://github.com/AceRider75/chronos
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AceRider75/chronos" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAceRider75%2Fchronos", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAceRider75%2Fchronos'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 230cac9fe6dcb1b5a635bb98dbe17f2a9022f275
[INFO] checking AceRider75/chronos against try#54cf65b8d066c082e536455049b95943cf30378f for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAceRider75%2Fchronos" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AceRider75/chronos
[INFO] finished tweaking git repo https://github.com/AceRider75/chronos
[INFO] tweaked toml for git repo https://github.com/AceRider75/chronos written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AceRider75/chronos on toolchain 54cf65b8d066c082e536455049b95943cf30378f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AceRider75/chronos 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" "+54cf65b8d066c082e536455049b95943cf30378f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b10ae01262b7de095a6d2839a03d9f5686b817f3445ce28c0c36386845465462
[INFO] running `Command { std: "docker" "start" "-a" "b10ae01262b7de095a6d2839a03d9f5686b817f3445ce28c0c36386845465462", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b10ae01262b7de095a6d2839a03d9f5686b817f3445ce28c0c36386845465462", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b10ae01262b7de095a6d2839a03d9f5686b817f3445ce28c0c36386845465462", kill_on_drop: false }`
[INFO] [stdout] b10ae01262b7de095a6d2839a03d9f5686b817f3445ce28c0c36386845465462
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0f72f715b84a1a299d2ea23d2988d1eea66b9f89f74076c0b682a76a64a64191
[INFO] running `Command { std: "docker" "start" "-a" "0f72f715b84a1a299d2ea23d2988d1eea66b9f89f74076c0b682a76a64a64191", kill_on_drop: false }`
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking volatile v0.4.6
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking linked_list_allocator v0.10.5
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking limine v0.5.0
[INFO] [stderr]     Checking pc-keyboard v0.7.0
[INFO] [stderr]     Checking volatile v0.6.1
[INFO] [stderr]     Checking x86_64 v0.14.13
[INFO] [stderr]     Checking noto-sans-mono-bitmap v0.2.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking spinning_top v0.2.5
[INFO] [stderr]     Checking pic8259 v0.10.4
[INFO] [stderr]     Checking chronos v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `scheduler`
[INFO] [stdout]  --> src/interrupts.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{state, input, writer, gdt, scheduler};
[INFO] [stdout]   |                                        ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RasterizedChar`
[INFO] [stdout]  --> src/writer.rs:1:41
[INFO] [stdout]   |
[INFO] [stdout] 1 | use noto_sans_mono_bitmap::{get_raster, RasterizedChar, FontWeight, RasterHeight};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `x86_64::structures::paging::mapper::MapToError`
[INFO] [stdout]  --> src/allocator.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use x86_64::structures::paging::mapper::MapToError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `x86_64::VirtAddr`
[INFO] [stdout]  --> src/allocator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use x86_64::VirtAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/scheduler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DS`
[INFO] [stdout]   --> src/gdt.rs:63:59
[INFO] [stdout]    |
[INFO] [stdout] 63 |     use x86_64::instructions::segmentation::{CS, Segment, DS, SS};
[INFO] [stdout]    |                                                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> src/userspace.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gdt`
[INFO] [stdout]  --> src/userspace.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::gdt;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::writer`
[INFO] [stdout]  --> src/pci.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::writer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/pci.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::string::String`
[INFO] [stdout]  --> src/pci.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use alloc::string::String;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::vec::Vec`
[INFO] [stdout]  --> src/net.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use alloc::vec::Vec;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::string::String`
[INFO] [stdout]  --> src/net.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::string::String;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `writer`
[INFO] [stdout]  --> src/elf.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{writer, memory, state};
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/elf.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `naked_functions` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(naked_functions)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: the `#[alloc_error_handler]` in this crate conflicts with allocation error handler in: std
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scheduler`
[INFO] [stdout]  --> src/interrupts.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{state, input, writer, gdt, scheduler};
[INFO] [stdout]   |                                        ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RasterizedChar`
[INFO] [stdout]  --> src/writer.rs:1:41
[INFO] [stdout]   |
[INFO] [stdout] 1 | use noto_sans_mono_bitmap::{get_raster, RasterizedChar, FontWeight, RasterHeight};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `x86_64::structures::paging::mapper::MapToError`
[INFO] [stdout]  --> src/allocator.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use x86_64::structures::paging::mapper::MapToError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `x86_64::VirtAddr`
[INFO] [stdout]  --> src/allocator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use x86_64::VirtAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/scheduler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DS`
[INFO] [stdout]   --> src/gdt.rs:63:59
[INFO] [stdout]    |
[INFO] [stdout] 63 |     use x86_64::instructions::segmentation::{CS, Segment, DS, SS};
[INFO] [stdout]    |                                                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> src/userspace.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gdt`
[INFO] [stdout]  --> src/userspace.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::gdt;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::writer`
[INFO] [stdout]  --> src/pci.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::writer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/pci.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::string::String`
[INFO] [stdout]  --> src/pci.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use alloc::string::String;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::vec::Vec`
[INFO] [stdout]  --> src/net.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use alloc::vec::Vec;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::string::String`
[INFO] [stdout]  --> src/net.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use alloc::string::String;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `writer`
[INFO] [stdout]  --> src/elf.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{writer, memory, state};
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alloc::format`
[INFO] [stdout]  --> src/elf.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use alloc::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0152]: found duplicate lang item `panic_impl`
[INFO] [stdout]   --> src/main.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | / fn panic(info: &core::panic::PanicInfo) -> ! {
[INFO] [stdout] 52 | |     writer::print("\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
[INFO] [stdout] 53 | |     writer::print("[KERNEL PANIC] SYSTEM HALTED\n");
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | |     loop { core::hint::spin_loop(); }
[INFO] [stdout] 71 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the lang item is first defined in crate `std` (which `test` depends on)
[INFO] [stdout]    = note: first definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/54cf65b8d066c082e536455049b95943cf30378f/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-957b1fe07cf96b13.rmeta
[INFO] [stdout]    = note: second definition in the local crate (`chronos`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0152`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `chronos` (bin "chronos" test) due to 2 previous errors; 15 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scheduler.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut stack = alloc::vec![0u8; 65536];
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/shell.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut win = compositor::Window::new(50, 50, 700, 400, "Terminal 1");
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/shell.rs:866:50
[INFO] [stdout]     |
[INFO] [stdout] 836 | ...   unsafe {
[INFO] [stdout]     |       ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 866 | ...       KERNEL_RSP.store(unsafe { let r: u64; core::arch::asm!("mov {}, rsp", out(reg) r); r & !0xF }, Ordering::Relaxed);
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell.rs:678:21
[INFO] [stdout]     |
[INFO] [stdout] 678 |                 let mut win = compositor::Window::new(300, 100, 400, 500, "System Monitor");
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell.rs:720:21
[INFO] [stdout]     |
[INFO] [stdout] 720 |                 let mut win = compositor::Window::new(150, 150, 500, 400, "File Explorer");
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/shell.rs:927:27
[INFO] [stdout]     |
[INFO] [stdout] 927 |     pub fn update_browser(win: &mut compositor::Window) {
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_ptr`
[INFO] [stdout]     --> src/shell.rs:1004:9
[INFO] [stdout]      |
[INFO] [stdout] 1004 |     let video_ptr = state::VIDEO_PTR.load(Ordering::Relaxed) as *mut u32;
[INFO] [stdout]      |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_ptr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pitch`
[INFO] [stdout]     --> src/shell.rs:1007:9
[INFO] [stdout]      |
[INFO] [stdout] 1007 |     let pitch = width; // Approximate pitch
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_pitch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `active_idx` is never read
[INFO] [stdout]     --> src/shell.rs:1038:30
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         let mut active_idx = None;
[INFO] [stdout]      |                              ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i` is never read
[INFO] [stdout]    --> src/rtl8139.rs:133:75
[INFO] [stdout]     |
[INFO] [stdout] 133 |         pkt[i] = 0x39; pkt[i+1] = 0x03; pkt[i+2] = 0xF3; pkt[i+3] = 0x26; i += 4; // XID
[INFO] [stdout]     |                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/net.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn handle_udp(data: &[u8], ip_header_ptr: *const u8) {
[INFO] [stdout]     |               ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/compositor.rs:552:21
[INFO] [stdout]     |
[INFO] [stdout] 552 |         if let Some(mut w) = writer::WRITER.lock().as_mut() {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:254:25
[INFO] [stdout]     |
[INFO] [stdout] 254 |                     let mut sched = scheduler::SCHEDULER.lock();
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CYCLE_BUDGET` is never used
[INFO] [stdout]  --> src/state.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub static CYCLE_BUDGET: AtomicU64 = AtomicU64::new(2_500_000);
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adjust_budget` is never used
[INFO] [stdout]   --> src/state.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn adjust_budget(amount: i64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_string` is never used
[INFO] [stdout]   --> src/writer.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Writer {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn write_string(&mut self, s: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `job` and `stack` are never read
[INFO] [stdout]   --> src/scheduler.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Task {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub job: Job,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub stack: Vec<u8>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `execute_frame` is never used
[INFO] [stdout]    --> src/scheduler.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl Scheduler {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn execute_frame(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `update_browser` is never used
[INFO] [stdout]    --> src/shell.rs:927:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl Shell {
[INFO] [stdout]     | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 927 |     pub fn update_browser(win: &mut compositor::Window) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resume_shell` is never used
[INFO] [stdout]     --> src/shell.rs:1002:8
[INFO] [stdout]      |
[INFO] [stdout] 1002 | pub fn resume_shell() -> ! {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_kernel_selectors` is never used
[INFO] [stdout]   --> src/gdt.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn get_kernel_selectors() -> (u16, u16) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `syscall_print` is never used
[INFO] [stdout]   --> src/userspace.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn syscall_print() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_vendor` is never used
[INFO] [stdout]   --> src/pci.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn lookup_vendor(id: u16) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_MAC` is never used
[INFO] [stdout]  --> src/rtl8139.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const REG_MAC: u16 = 0x00;      // MAC Address
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_ISR` is never used
[INFO] [stdout]   --> src/rtl8139.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const REG_ISR: u16 = 0x3E;      // Interrupt Status Register
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_TCR` is never used
[INFO] [stdout]   --> src/rtl8139.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const REG_TCR: u16 = 0x40;      // Transmit Configuration Register
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `log_mac` and `get_hardware_status` are never used
[INFO] [stdout]    --> src/rtl8139.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Rtl8139 {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn log_mac(&self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_hardware_status(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `saved_background` and `first_draw` are never read
[INFO] [stdout]   --> src/mouse.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Mouse {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     saved_background: [u32; 100], 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     first_draw: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_position` is never used
[INFO] [stdout]   --> src/mouse.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn get_position() -> (usize, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cursor_visible` is never read
[INFO] [stdout]   --> src/compositor.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Window {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub cursor_visible: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_cursor`, `print_at`, and `draw_cursor` are never used
[INFO] [stdout]    --> src/compositor.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Window {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn set_cursor(&mut self, x: usize, y: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn print_at(&mut self, x: usize, y: usize, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn draw_cursor(&mut self, color: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_PORT` is never used
[INFO] [stdout]  --> src/ata.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const ERROR_PORT: u16 = 0x1F1;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/allocator.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let heap_start = HEAP_MEM.as_ptr() as usize;
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scheduler.rs:164:28
[INFO] [stdout]     |
[INFO] [stdout] 164 |             context_switch(&mut SCHEDULER_CONTEXT, &context_to_load as *const TaskContext);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 164 |             context_switch(&raw mut SCHEDULER_CONTEXT, &context_to_load as *const TaskContext);
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/gdt.rs:16:55
[INFO] [stdout]    |
[INFO] [stdout] 16 |         let stack_start = VirtAddr::from_ptr(unsafe { &KERNEL_STACK });
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 16 |         let stack_start = VirtAddr::from_ptr(unsafe { &raw const KERNEL_STACK });
[INFO] [stdout]    |                                                        +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/gdt.rs:25:57
[INFO] [stdout]    |
[INFO] [stdout] 25 |              let df_start = VirtAddr::from_ptr(unsafe { &DF_STACK });
[INFO] [stdout]    |                                                         ^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 25 |              let df_start = VirtAddr::from_ptr(unsafe { &raw const DF_STACK });
[INFO] [stdout]    |                                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/gdt.rs:32:58
[INFO] [stdout]    |
[INFO] [stdout] 32 |              let int_start = VirtAddr::from_ptr(unsafe { &INT_STACK });
[INFO] [stdout]    |                                                          ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 32 |              let int_start = VirtAddr::from_ptr(unsafe { &raw const INT_STACK });
[INFO] [stdout]    |                                                           +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/memory.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let allocator = FRAME_ALLOCATOR.as_mut().expect("PMM not init");
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0f72f715b84a1a299d2ea23d2988d1eea66b9f89f74076c0b682a76a64a64191", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0f72f715b84a1a299d2ea23d2988d1eea66b9f89f74076c0b682a76a64a64191", kill_on_drop: false }`
[INFO] [stdout] 0f72f715b84a1a299d2ea23d2988d1eea66b9f89f74076c0b682a76a64a64191
