Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE: index out of bounds, snapshot vec #122823

Open
matthiaskrgr opened this issue Mar 21, 2024 · 8 comments
Open

ICE: index out of bounds, snapshot vec #122823

matthiaskrgr opened this issue Mar 21, 2024 · 8 comments
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

Code

use std::vec::Vec;
use std::iter::Peekable;

pub fn main() {
    let packet = decode(vec![1,0,1,0]);
}

pub fn decode(bitstream: Vec<u64>) -> Packet {
    let mut bitstream_itr = bitstream.into_iter().peekable();
    return match decode_packet(&mut bitstream_itr) {
        Some(p) => p,
        None    => panic!("expected outer packet"),
    }
}

pub fn decode_packets<I: Iterator<Item = u64>>(itr: &mut Peekable<I>) -> Vec<Packet> {
    let mut res = Vec::new();
    loop {
        match decode_packet(itr) {
            Some(p) => { res.push(p); },
            None    => break
        }
    }

    return res;
}

pub fn decode_packet<I: Iterator<Item = u64>>(itr: &mut Peekable<I>) -> Option<Packet> {
    // get version digits
    let version = extend_number(0, itr, 3)?;
    let type_id = extend_number(0, itr, 3)?;
    return operator_packet(version, type_id, itr);
}

pub fn operator_packet<I: Iterator<Item = u64>>(version: u64, type_id: u64, itr: &mut Peekable<I>) -> Option<Packet> {
    let p = OperatorPacket {
        version: version,
        type_id: type_id,
        packets: decode_packets(&mut itr.take(0).peekable()),
    };

    return Some(Packet::Operator(p));
}

pub fn extend_number<I: Iterator<Item = u64>>(num: u64, itr: &mut Peekable<I>, take: u64) -> Option<u64> {
    let mut value = num;
    for _ in 0..take {
        value *= 2;
        value += itr.next()?;
    }

    return Some(value);
}

#[derive(Debug)]
pub enum Packet {
    Operator(OperatorPacket),
}

#[derive(Debug)]
pub struct OperatorPacket {
    version: u64,
    type_id: u64,
    packets: Vec<Packet>
}

Meta

rustc --version --verbose:


Error output

warning: the item `Vec` is imported redundantly
   --> ./92004.rs:1:5
    |
1   | use std::vec::Vec;
    |     ^^^^^^^^^^^^^
    |
   ::: /home/gh-matthiaskrgr/.rustup/toolchains/master/lib/rustlib/src/rust/library/std/src/prelude/mod.rs:105:13
    |
105 |     pub use super::v1::*;
    |             --------- the item `Vec` is already defined here
    |
    = note: `#[warn(unused_imports)]` on by default

warning: unused variable: `packet`
 --> ./92004.rs:5:9
  |
5 |     let packet = decode(vec![1,0,1,0]);
  |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet`
  |
  = note: `#[warn(unused_variables)]` on by default

warning: fields `version`, `type_id`, and `packets` are never read
  --> ./92004.rs:62:5
   |
61 | pub struct OperatorPacket {
   |            -------------- fields in this struct
62 |     version: u64,
   |     ^^^^^^^
63 |     type_id: u64,
   |     ^^^^^^^
64 |     packets: Vec<Packet>
   |     ^^^^^^^
   |
   = note: `OperatorPacket` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
   = note: `#[warn(dead_code)]` on by default
Backtrace

thread 'rustc' panicked at /rust/deps/ena-0.14.2/src/snapshot_vec.rs:199:10:
index out of bounds: the len is 0 but the index is 0
stack backtrace:
   0:     0x7f0eb954ffa5 - std::backtrace_rs::backtrace::libunwind::trace::he2d7e0b4ceae414e
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x7f0eb954ffa5 - std::backtrace_rs::backtrace::trace_unsynchronized::hdaffc19ffc09bde8
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f0eb954ffa5 - std::sys_common::backtrace::_print_fmt::hd4fb259cf7d0e8e3
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7f0eb954ffa5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h762a4aab0b589a4c
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f0eb95a0feb - core::fmt::rt::Argument::fmt::hf72a54190dc4baa2
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/core/src/fmt/rt.rs:142:9
   5:     0x7f0eb95a0feb - core::fmt::write::h24784e35e0380a3e
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/core/src/fmt/mod.rs:1153:17
   6:     0x7f0eb9544d3f - std::io::Write::write_fmt::hb24b3a89fb200ddb
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/io/mod.rs:1843:15
   7:     0x7f0eb954fd7e - std::sys_common::backtrace::_print::h0e48be87587a473e
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7f0eb954fd7e - std::sys_common::backtrace::print::h078f9026890c0b12
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7f0eb95529f9 - std::panicking::default_hook::{{closure}}::h19f2ef2f452cda43
  10:     0x7f0eb9552763 - std::panicking::default_hook::h0e9944bdb39da579
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/panicking.rs:292:9
  11:     0x7f0eb5fceb9f - std[8c61ae4e9dc6f99a]::panicking::update_hook::<alloc[3095c8d5ffc1f53c]::boxed::Box<rustc_driver_impl[50dc0f0ce2053d12]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7f0eb9553150 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hfbae6ab25830f7c8
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/alloc/src/boxed.rs:2029:9
  13:     0x7f0eb9553150 - std::panicking::rust_panic_with_hook::h33fb6d06d73e30d6
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/panicking.rs:783:13
  14:     0x7f0eb9552ea6 - std::panicking::begin_panic_handler::{{closure}}::he600efcf8c3cf12a
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/panicking.rs:657:13
  15:     0x7f0eb9550469 - std::sys_common::backtrace::__rust_end_short_backtrace::he9a6cadc9215c56f
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7f0eb9552bd7 - rust_begin_unwind
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/panicking.rs:645:5
  17:     0x7f0eb959d486 - core::panicking::panic_fmt::hd936952a5927c902
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/core/src/panicking.rs:72:14
  18:     0x7f0eb959d6a7 - core::panicking::panic_bounds_check::h6249d6f447df14c3
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/core/src/panicking.rs:205:5
  19:     0x7f0eb86395e8 - <ena[3fe8f2b21ea0da14]::unify::UnificationTable<ena[3fe8f2b21ea0da14]::unify::backing_vec::InPlace<rustc_infer[d94298ef228ce58b]::infer::type_variable::TyVidEqKey, &mut alloc[3095c8d5ffc1f53c]::vec::Vec<ena[3fe8f2b21ea0da14]::unify::VarValue<rustc_infer[d94298ef228ce58b]::infer::type_variable::TyVidEqKey>>, &mut rustc_infer[d94298ef228ce58b]::infer::snapshot::undo_log::InferCtxtUndoLogs>>>::uninlined_get_root_key.llvm.556618795195803917.cold
  20:     0x7f0eb49d4cee - <rustc_infer[d94298ef228ce58b]::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir[3b1757e14fa16666]::fold::TypeFolder<rustc_middle[dd5b3b6f0751d1e7]::ty::context::TyCtxt>>::fold_ty
  21:     0x7f0eb49d52a5 - <rustc_infer[d94298ef228ce58b]::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir[3b1757e14fa16666]::fold::TypeFolder<rustc_middle[dd5b3b6f0751d1e7]::ty::context::TyCtxt>>::fold_ty
  22:     0x7f0eb49d52a5 - <rustc_infer[d94298ef228ce58b]::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir[3b1757e14fa16666]::fold::TypeFolder<rustc_middle[dd5b3b6f0751d1e7]::ty::context::TyCtxt>>::fold_ty
  23:     0x7f0eb77853c5 - <rustc_infer[d94298ef228ce58b]::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir[3b1757e14fa16666]::fold::FallibleTypeFolder<rustc_middle[dd5b3b6f0751d1e7]::ty::context::TyCtxt>>::try_fold_predicate
  24:     0x7f0eb48e20af - rustc_ty_utils[818eeb7f16c0446]::common_traits::is_copy_raw
  25:     0x7f0eb78c6265 - rustc_query_impl[103b6eeeb95b654e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[103b6eeeb95b654e]::query_impl::is_copy_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 1usize]>>
  26:     0x7f0eb78c5953 - rustc_query_system[72071770fb0f9e7d]::query::plumbing::try_execute_query::<rustc_query_impl[103b6eeeb95b654e]::DynamicConfig<rustc_query_system[72071770fb0f9e7d]::query::caches::DefaultCache<rustc_middle[dd5b3b6f0751d1e7]::ty::ParamEnvAnd<rustc_middle[dd5b3b6f0751d1e7]::ty::Ty>, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[103b6eeeb95b654e]::plumbing::QueryCtxt, false>
  27:     0x7f0eb78c560e - rustc_query_impl[103b6eeeb95b654e]::query_impl::is_copy_raw::get_query_non_incr::__rust_end_short_backtrace
  28:     0x7f0eb78c6b18 - rustc_ty_utils[818eeb7f16c0446]::needs_drop::needs_drop_raw
  29:     0x7f0eb78c6547 - rustc_query_impl[103b6eeeb95b654e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[103b6eeeb95b654e]::query_impl::needs_drop_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 1usize]>>
  30:     0x7f0eb78c58fb - rustc_query_system[72071770fb0f9e7d]::query::plumbing::try_execute_query::<rustc_query_impl[103b6eeeb95b654e]::DynamicConfig<rustc_query_system[72071770fb0f9e7d]::query::caches::DefaultCache<rustc_middle[dd5b3b6f0751d1e7]::ty::ParamEnvAnd<rustc_middle[dd5b3b6f0751d1e7]::ty::Ty>, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[103b6eeeb95b654e]::plumbing::QueryCtxt, false>
  31:     0x7f0eb78c554e - rustc_query_impl[103b6eeeb95b654e]::query_impl::needs_drop_raw::get_query_non_incr::__rust_end_short_backtrace
  32:     0x7f0eb4e6510a - rustc_ty_utils[818eeb7f16c0446]::instance::resolve_instance
  33:     0x7f0eb79a8145 - rustc_query_impl[103b6eeeb95b654e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[103b6eeeb95b654e]::query_impl::resolve_instance::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 32usize]>>
  34:     0x7f0eb79a8484 - rustc_query_system[72071770fb0f9e7d]::query::plumbing::try_execute_query::<rustc_query_impl[103b6eeeb95b654e]::DynamicConfig<rustc_query_system[72071770fb0f9e7d]::query::caches::DefaultCache<rustc_middle[dd5b3b6f0751d1e7]::ty::ParamEnvAnd<(rustc_span[df0a12af4122e9fb]::def_id::DefId, &rustc_middle[dd5b3b6f0751d1e7]::ty::list::List<rustc_middle[dd5b3b6f0751d1e7]::ty::generic_args::GenericArg>)>, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 32usize]>>, false, false, false>, rustc_query_impl[103b6eeeb95b654e]::plumbing::QueryCtxt, false>
  35:     0x7f0eb79a80dd - rustc_query_impl[103b6eeeb95b654e]::query_impl::resolve_instance::get_query_non_incr::__rust_end_short_backtrace
  36:     0x7f0eb79aa466 - <rustc_middle[dd5b3b6f0751d1e7]::ty::instance::Instance>::resolve_drop_in_place
  37:     0x7f0eb4afc13f - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec::{closure#0}
  38:     0x7f0eb81a0392 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  39:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  40:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  41:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  42:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  43:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  44:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  45:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  46:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  47:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  48:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  49:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  50:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  51:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  52:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  53:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  54:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  55:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  56:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  57:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  58:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  59:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  60:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  61:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  62:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  63:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  64:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  65:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  66:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  67:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  68:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  69:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  70:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  71:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  72:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  73:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  74:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  75:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  76:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  77:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  78:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  79:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  80:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  81:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  82:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  83:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  84:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  85:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  86:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  87:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  88:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  89:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  90:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  91:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  92:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  93:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  94:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  95:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  96:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  97:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  98:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
  99:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 100:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 101:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 102:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 103:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 104:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 105:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 106:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 107:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 108:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 109:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 110:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 111:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 112:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 113:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 114:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 115:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 116:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 117:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 118:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 119:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 120:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 121:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 122:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 123:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 124:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 125:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 126:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 127:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 128:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 129:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 130:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 131:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 132:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 133:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 134:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 135:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 136:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 137:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 138:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 139:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 140:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 141:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 142:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 143:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 144:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 145:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 146:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 147:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 148:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 149:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 150:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 151:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 152:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 153:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 154:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 155:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 156:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 157:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 158:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 159:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 160:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 161:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 162:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 163:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 164:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 165:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 166:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 167:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 168:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 169:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 170:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 171:     0x7f0eb81a0d50 - rustc_monomorphize[cce86ba432f7b2a0]::collector::collect_items_rec
 172:     0x7f0eb8198df6 - rustc_monomorphize[cce86ba432f7b2a0]::partitioning::collect_and_partition_mono_items
 173:     0x7f0eb81983ee - rustc_query_impl[103b6eeeb95b654e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[103b6eeeb95b654e]::query_impl::collect_and_partition_mono_items::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 24usize]>>
 174:     0x7f0eb81983d3 - <rustc_query_impl[103b6eeeb95b654e]::query_impl::collect_and_partition_mono_items::dynamic_query::{closure#2} as core[db3fd14870e16b34]::ops::function::FnOnce<(rustc_middle[dd5b3b6f0751d1e7]::ty::context::TyCtxt, ())>>::call_once
 175:     0x7f0eb823d6ce - rustc_query_system[72071770fb0f9e7d]::query::plumbing::try_execute_query::<rustc_query_impl[103b6eeeb95b654e]::DynamicConfig<rustc_query_system[72071770fb0f9e7d]::query::caches::SingleCache<rustc_middle[dd5b3b6f0751d1e7]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[103b6eeeb95b654e]::plumbing::QueryCtxt, false>
 176:     0x7f0eb823d3c5 - rustc_query_impl[103b6eeeb95b654e]::query_impl::collect_and_partition_mono_items::get_query_non_incr::__rust_end_short_backtrace
 177:     0x7f0eb82d0af0 - rustc_codegen_ssa[5284b279088479b5]::base::codegen_crate::<rustc_codegen_llvm[3fb2aaf30ffb7008]::LlvmCodegenBackend>
 178:     0x7f0eb82c3e29 - <rustc_codegen_llvm[3fb2aaf30ffb7008]::LlvmCodegenBackend as rustc_codegen_ssa[5284b279088479b5]::traits::backend::CodegenBackend>::codegen_crate
 179:     0x7f0eb82c379f - rustc_interface[f82c04bf8d9e9e5f]::passes::start_codegen
 180:     0x7f0eb82c2f33 - <rustc_interface[f82c04bf8d9e9e5f]::queries::Queries>::codegen_and_build_linker
 181:     0x7f0eb80905d6 - rustc_interface[f82c04bf8d9e9e5f]::interface::run_compiler::<core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>, rustc_driver_impl[50dc0f0ce2053d12]::run_compiler::{closure#0}>::{closure#0}
 182:     0x7f0eb815cac5 - std[8c61ae4e9dc6f99a]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[f82c04bf8d9e9e5f]::util::run_in_thread_with_globals<rustc_interface[f82c04bf8d9e9e5f]::util::run_in_thread_pool_with_globals<rustc_interface[f82c04bf8d9e9e5f]::interface::run_compiler<core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>, rustc_driver_impl[50dc0f0ce2053d12]::run_compiler::{closure#0}>::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>
 183:     0x7f0eb815c8f2 - <<std[8c61ae4e9dc6f99a]::thread::Builder>::spawn_unchecked_<rustc_interface[f82c04bf8d9e9e5f]::util::run_in_thread_with_globals<rustc_interface[f82c04bf8d9e9e5f]::util::run_in_thread_pool_with_globals<rustc_interface[f82c04bf8d9e9e5f]::interface::run_compiler<core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>, rustc_driver_impl[50dc0f0ce2053d12]::run_compiler::{closure#0}>::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[db3fd14870e16b34]::result::Result<(), rustc_span[df0a12af4122e9fb]::ErrorGuaranteed>>::{closure#1} as core[db3fd14870e16b34]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
 184:     0x7f0eb955c919 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8bca559b886796e2
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/alloc/src/boxed.rs:2015:9
 185:     0x7f0eb955c919 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h6921d0e12fce02bd
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/alloc/src/boxed.rs:2015:9
 186:     0x7f0eb955c919 - std::sys::pal::unix::thread::Thread::new::thread_start::hba4f4afbe9e3ea3d
                               at /rustc/df8ac8f1d74cffb96a93ae702d16e224f5b9ee8c/library/std/src/sys/pal/unix/thread.rs:108:17
 187:     0x7f0eb2c94ac3 - start_thread
                               at ./nptl/pthread_create.c:442:8
 188:     0x7f0eb2d26850 - __GI___clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
 189:                0x0 - <unknown>

error: 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: please attach the file at `/home/gh-matthiaskrgr/vcs/github/glacier2/fixed/rustc-ice-2024-03-21T11_22_20-907115.txt` to your bug report

query stack during panic:
thread panicked while processing panic. aborting.
Aborted (core dumped)

@matthiaskrgr matthiaskrgr added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. labels Mar 21, 2024
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 21, 2024
@matthiaskrgr
Copy link
Member Author

This used to


error[E0275]: overflow evaluating the requirement `&mut Peekable<std::vec::IntoIter<u64>>: Sized`
  |
  = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`92004`)
  = note: required for `std::iter::Take<&mut Peekable<std::vec::IntoIter<u64>>>` to implement `Iterator`
  = note: 128 redundant requirements hidden
  = note: required for `&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut Peekable<Take<&mut ...>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Iterator`
  = note: the full name for the type has been written to '92004.long-type-4628559490788026519.txt'
  = note: consider using `--verbose` to print the full type name to the console

error: aborting due to 1 previous error; 3 warnings emitted

For more information about this error, try `rustc --explain E0275`.

This is a regression from #122568 cc @RalfJung

@RalfJung
Copy link
Member

The ICE is somewhere in resolve_drop_in_place... we're just calling that more often, but I don't think in any way that would be wrong? Not sure what's happening here.

Cc @oli-obk @compiler-errors

@compiler-errors
Copy link
Member

Yeah there is a class of overflow errors that dont end up reporting errors but end up returning unconstrained infer vars, which end up escaping snapshots and causing explosions.

I don't have an example issue number, but I can find it when I'm at my desk.

@compiler-errors
Copy link
Member

#95134

@compiler-errors
Copy link
Member

previous attempt to catch overflows in projection resulted in: #104610

@saethlin saethlin removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 21, 2024
@RalfJung
Copy link
Member

RalfJung commented Mar 21, 2024 via email

@compiler-errors
Copy link
Member

This is not a stack overflow. This is an overflow in the trait solver, i.e. we've needed to compute a nested where clause that is too deep.

@RalfJung
Copy link
Member

RalfJung commented Mar 21, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

5 participants