Skip to content

ICE: failed to get layout for [type error] #92979

@alvarozamora

Description

@alvarozamora

Code

use std::fs; use std::fs::File; use std::io::Read; use std::convert::TryInto; fn get_file_as_byte_vec(filename: &String) -> Vec<u8> { let mut f = File::open(&filename).expect("no file found"); let metadata = fs::metadata(&filename).expect("unable to read metadata"); let mut buffer = vec![0; metadata.len() as usize]; f.read(&mut buffer).expect("buffer overflow"); buffer } fn demo<T, const N: usize>(v: Vec<T>) -> [T; N] { v.try_into() .unwrap_or_else(|v: Vec<T>| panic!("Expected a Vec of length {} but it was {}", N, v.len())) } fn main() { // Specify filepath let file: &String = &String::from("SomeBinaryDataFileWith4ByteHeaders_f32s_and_u32s"); // Read file into a vector of bytes let file_data = get_file_as_byte_vec(file); // Print length of vector and first few values let length = file_data.len(); println!("The read function read {} bytes", length); println!("The first few bytes:"); for i in 0..20{ println!("{}", file_data[i]); } // Manually count just to make sure let mut n: u64 = 0; for data in file_data{ n += 1; } println!("We counted {} bytes", n); assert!(n as usize == length, "Manual counting does not equal len method"); // Simulation parameters  const N: usize = 49627502; // Number of Particles const bs: f64 = 125.0; // Box Size const HEADER_INCREMENT: u64 = 4*1; // Initialize index and counter variables let (mut j, mut pos, mut vel, mut id, mut mass): (u64, u64, u64, u64, u64) = (0, 0, 0, 0, 0); // Unpack Position Data j += HEADER_INCREMENT; let mut position: Vec<f32> = Vec::new(); while position.len() < N*3 { let p: Vec<u8> = Vec::new(); for item in 0i8..4 { let item = item; p.push(file_data[j as usize]); j += 1; } &mut position[position.len()] = f32::from_be_bytes(demo(p)); } // Ensure position data is indeed position by checking values for p in position { assert!((p > 0.) & (p < 125.), "Not in box") } }

Meta

rustc --version --verbose:

rustc 1.58.0 (02072b482 2022-01-11) binary: rustc commit-hash: 02072b482a8b5357f7fb5e5637444ae30e423c40 commit-date: 2022-01-11 host: x86_64-unknown-linux-gnu release: 1.58.0 LLVM version: 13.0.0 

Error output

warning: unused variable: `data` --> fixbinary.rs:41:9 | 41 | for data in file_data{ | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` | = note: `#[warn(unused_variables)]` on by default warning: unused variable: `pos` --> fixbinary.rs:53:21 | 53 | let (mut j, mut pos, mut vel, mut id, mut mass): (u64, u64, u64, u64, u64) = (0, 0, 0, 0, 0); | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` warning: unused variable: `vel` --> fixbinary.rs:53:30 | 53 | let (mut j, mut pos, mut vel, mut id, mut mass): (u64, u64, u64, u64, u64) = (0, 0, 0, 0, 0); | ^^^ help: if this is intentional, prefix it with an underscore: `_vel` warning: unused variable: `id` --> fixbinary.rs:53:39 | 53 | let (mut j, mut pos, mut vel, mut id, mut mass): (u64, u64, u64, u64, u64) = (0, 0, 0, 0, 0); | ^^ help: if this is intentional, prefix it with an underscore: `_id` warning: unused variable: `mass` --> fixbinary.rs:53:47 | 53 | let (mut j, mut pos, mut vel, mut id, mut mass): (u64, u64, u64, u64, u64) = (0, 0, 0, 0, 0); | ^^^^ help: if this is intentional, prefix it with an underscore: `_mass` warning: unused variable: `item` --> fixbinary.rs:62:17 | 62 | let item = item; | ^^^^ help: if this is intentional, prefix it with an underscore: `_item` warning: constant is never used: `bs` --> fixbinary.rs:49:5 | 49 | const bs: f64 = 125.0; // Box Size | ^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default warning: constant `bs` should have an upper case name --> fixbinary.rs:49:11 | 49 | const bs: f64 = 125.0; // Box Size | ^^ help: convert the identifier to upper case: `BS` | = note: `#[warn(non_upper_case_globals)]` on by default error: internal compiler error: compiler/rustc_codegen_llvm/src/context.rs:867:13: failed to get layout for `[type error]`: the type `[type error]` has an unknown layout --> fixbinary.rs:23:1 | 23 | fn main() { | ^^^^^^^^^ thread 'rustc' panicked at 'Box<dyn Any>', /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/compiler/rustc_errors/src/lib.rs:1115:9 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md note: rustc 1.58.0 (02072b482 2022-01-11) running on x86_64-unknown-linux-gnu query stack during panic: end of query stack error: aborting due to previous error; 8 warnings emitted 
Backtrace

thread 'rustc' panicked at 'Box<dyn Any>', /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/compiler/rustc_errors/src/lib.rs:1115:9 stack backtrace: 0: 0x7f204083be5c - std::backtrace_rs::backtrace::libunwind::trace::h093d4af0eabdfc15 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5 1: 0x7f204083be5c - std::backtrace_rs::backtrace::trace_unsynchronized::h2b90813d74c759ca at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7f204083be5c - std::sys_common::backtrace::_print_fmt::hfaa8856bf3eca13f at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:67:5 3: 0x7f204083be5c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h0cbaef3adcb5a454 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:46:22 4: 0x7f204089918c - core::fmt::write::h35a8eb836b847360 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/fmt/mod.rs:1149:17 5: 0x7f204082bf55 - std::io::Write::write_fmt::h45f2b8390f189782 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/io/mod.rs:1697:15 6: 0x7f204083f2b0 - std::sys_common::backtrace::_print::h56f62073b0e62985 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:49:5 7: 0x7f204083f2b0 - std::sys_common::backtrace::print::h152fba05ec38941b at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:36:9 8: 0x7f204083f2b0 - std::panicking::default_hook::{{closure}}::ha3121a0b8482251f at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:211:50 9: 0x7f204083ee65 - std::panicking::default_hook::hde5d78c11ae3b8f6 at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:228:9 10: 0x7f2040fe8d71 - rustc_driver[b9de4364bfcde3cd]::DEFAULT_HOOK::{closure#0}::{closure#0} 11: 0x7f204083fac9 - std::panicking::rust_panic_with_hook::he6f55c3e7ed1777c at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:610:17 12: 0x7f2041130bfb - std[40fd643a72e9c5b]::panicking::begin_panic::<rustc_errors[2765bbf9a6752b72]::ExplicitBug>::{closure#0} 13: 0x7f2041130556 - std[40fd643a72e9c5b]::sys_common::backtrace::__rust_end_short_backtrace::<std[40fd643a72e9c5b]::panicking::begin_panic<rustc_errors[2765bbf9a6752b72]::ExplicitBug>::{closure#0}, !> 14: 0x7f204116718f - std[40fd643a72e9c5b]::panicking::begin_panic::<rustc_errors[2765bbf9a6752b72]::ExplicitBug> 15: 0x7f204115e52d - std[40fd643a72e9c5b]::panic::panic_any::<rustc_errors[2765bbf9a6752b72]::ExplicitBug> 16: 0x7f204115d338 - <rustc_errors[2765bbf9a6752b72]::HandlerInner>::span_bug::<rustc_span[87dd3c90247a33c7]::span_encoding::Span> 17: 0x7f204115d230 - <rustc_errors[2765bbf9a6752b72]::Handler>::span_bug::<rustc_span[87dd3c90247a33c7]::span_encoding::Span> 18: 0x7f2041154552 - rustc_middle[da375b81956c4f3d]::ty::context::tls::with_opt::<rustc_middle[da375b81956c4f3d]::util::bug::opt_span_bug_fmt<rustc_span[87dd3c90247a33c7]::span_encoding::Span>::{closure#0}, ()> 19: 0x7f20411543e0 - rustc_middle[da375b81956c4f3d]::util::bug::opt_span_bug_fmt::<rustc_span[87dd3c90247a33c7]::span_encoding::Span> 20: 0x7f20411543ac - rustc_middle[da375b81956c4f3d]::util::bug::span_bug_fmt::<rustc_span[87dd3c90247a33c7]::span_encoding::Span> 21: 0x7f204112b7b6 - <rustc_codegen_llvm[7e58ca7f3e3a6114]::context::CodegenCx as rustc_middle[da375b81956c4f3d]::ty::layout::LayoutOfHelpers>::handle_layout_err 22: 0x7f20411291fa - <rustc_codegen_llvm[7e58ca7f3e3a6114]::context::CodegenCx as rustc_middle[da375b81956c4f3d]::ty::layout::LayoutOf>::spanned_layout_of::{closure#0} 23: 0x7f2042247f2e - <rustc_codegen_llvm[7e58ca7f3e3a6114]::context::CodegenCx as rustc_middle[da375b81956c4f3d]::ty::layout::LayoutOf>::spanned_layout_of 24: 0x7f2042246f8e - <core[5959bd7a20bc512c]::iter::adapters::map::Map<core[5959bd7a20bc512c]::slice::iter::Iter<rustc_middle[da375b81956c4f3d]::mir::LocalDecl>, rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::non_ssa_locals<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder>::{closure#0}> as core[5959bd7a20bc512c]::iter::traits::iterator::Iterator>::fold::<(), core[5959bd7a20bc512c]::iter::traits::iterator::Iterator::for_each::call<rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::LocalKind, <alloc[57a5c12a58f2352a]::vec::Vec<rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::LocalKind> as alloc[57a5c12a58f2352a]::vec::spec_extend::SpecExtend<rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::LocalKind, core[5959bd7a20bc512c]::iter::adapters::map::Map<core[5959bd7a20bc512c]::slice::iter::Iter<rustc_middle[da375b81956c4f3d]::mir::LocalDecl>, rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::non_ssa_locals<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder>::{closure#0}>>>::spec_extend::{closure#0}>::{closure#0}> 25: 0x7f2042274483 - rustc_codegen_ssa[131e031ff59460c4]::mir::analyze::non_ssa_locals::<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder> 26: 0x7f204226063d - rustc_codegen_ssa[131e031ff59460c4]::mir::codegen_mir::<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder> 27: 0x7f2042244cc4 - rustc_codegen_ssa[131e031ff59460c4]::base::codegen_instance::<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder> 28: 0x7f2042254efe - <rustc_middle[da375b81956c4f3d]::mir::mono::MonoItem as rustc_codegen_ssa[131e031ff59460c4]::mono_item::MonoItemExt>::define::<rustc_codegen_llvm[7e58ca7f3e3a6114]::builder::Builder> 29: 0x7f2042258e50 - rustc_codegen_llvm[7e58ca7f3e3a6114]::base::compile_codegen_unit::module_codegen 30: 0x7f2042bfb176 - <rustc_query_system[54375e604b07d15e]::dep_graph::graph::DepGraph<rustc_middle[da375b81956c4f3d]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[da375b81956c4f3d]::ty::context::TyCtxt, rustc_span[87dd3c90247a33c7]::symbol::Symbol, rustc_codegen_ssa[131e031ff59460c4]::ModuleCodegen<rustc_codegen_llvm[7e58ca7f3e3a6114]::ModuleLlvm>> 31: 0x7f2042c57337 - rustc_codegen_llvm[7e58ca7f3e3a6114]::base::compile_codegen_unit 32: 0x7f2042c11499 - rustc_codegen_ssa[131e031ff59460c4]::base::codegen_crate::<rustc_codegen_llvm[7e58ca7f3e3a6114]::LlvmCodegenBackend> 33: 0x7f2042c3bb7a - <rustc_codegen_llvm[7e58ca7f3e3a6114]::LlvmCodegenBackend as rustc_codegen_ssa[131e031ff59460c4]::traits::backend::CodegenBackend>::codegen_crate 34: 0x7f2042bc761e - <rustc_interface[3fb879ef72273690]::queries::Queries>::ongoing_codegen 35: 0x7f2042b8baba - <rustc_interface[3fb879ef72273690]::interface::Compiler>::enter::<rustc_driver[b9de4364bfcde3cd]::run_compiler::{closure#1}::{closure#2}, core[5959bd7a20bc512c]::result::Result<core[5959bd7a20bc512c]::option::Option<rustc_interface[3fb879ef72273690]::queries::Linker>, rustc_errors[2765bbf9a6752b72]::ErrorReported>> 36: 0x7f2042b87984 - rustc_span[87dd3c90247a33c7]::with_source_map::<core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>, rustc_interface[3fb879ef72273690]::interface::create_compiler_and_run<core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>, rustc_driver[b9de4364bfcde3cd]::run_compiler::{closure#1}>::{closure#1}> 37: 0x7f2042b8c8df - <scoped_tls[2c65bc5c0a345aa9]::ScopedKey<rustc_span[87dd3c90247a33c7]::SessionGlobals>>::set::<rustc_interface[3fb879ef72273690]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[3fb879ef72273690]::interface::run_compiler<core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>, rustc_driver[b9de4364bfcde3cd]::run_compiler::{closure#1}>::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>>::{closure#0}::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>> 38: 0x7f2042b8aa15 - std[40fd643a72e9c5b]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[3fb879ef72273690]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[3fb879ef72273690]::interface::run_compiler<core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>, rustc_driver[b9de4364bfcde3cd]::run_compiler::{closure#1}>::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>>::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>> 39: 0x7f2042bb4baa - <<std[40fd643a72e9c5b]::thread::Builder>::spawn_unchecked<rustc_interface[3fb879ef72273690]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[3fb879ef72273690]::interface::run_compiler<core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>, rustc_driver[b9de4364bfcde3cd]::run_compiler::{closure#1}>::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>>::{closure#0}, core[5959bd7a20bc512c]::result::Result<(), rustc_errors[2765bbf9a6752b72]::ErrorReported>>::{closure#1} as core[5959bd7a20bc512c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 40: 0x7f204084abf3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h3604301cdaaa9dbf at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/alloc/src/boxed.rs:1694:9 41: 0x7f204084abf3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h4cf736d2de892eff at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/alloc/src/boxed.rs:1694:9 42: 0x7f204084abf3 - std::sys::unix::thread::Thread::new::thread_start::h71a82d4ee5b02c9b at /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys/unix/thread.rs:106:17 43: 0x7f204058bea5 - start_thread 44: 0x7f203fea89fd - __clone 45: 0x0 - <unknown> 

I'm trying to read in a binary file (in a probably odd way). I'm just barely learning Rust; started <1 week ago. Sorry for breaking things.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions