Skip to content

Compiler panic on recursion limit finding the struct tail #114484

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

Closed
Rexagon opened this issue Aug 4, 2023 · 0 comments · Fixed by #135464
Closed

Compiler panic on recursion limit finding the struct tail #114484

Rexagon opened this issue Aug 4, 2023 · 0 comments · Fixed by #135464
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

@Rexagon
Copy link

Rexagon commented Aug 4, 2023

Code

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=bcc54139b4a6e66d29216bd7ae3c5122

use std::marker::PhantomData;

trait MyTrait {
    fn virtualize(&self) -> &dyn MyTrait;
}

struct VirtualWrapper<T, const L: u8>(T);

impl<T, const L: u8> VirtualWrapper<T, L> {
    pub fn wrap(value: &T) -> &Self {
        unsafe { &*(value as *const T as *const Self) }
    }
}

impl<T: MyTrait + 'static, const L: u8> MyTrait for VirtualWrapper<T, L> {
    fn virtualize(&self) -> &dyn MyTrait {
        unsafe { virtualize_my_trait(L, self) }
        // unsafe { virtualize_my_trait(L, &self.0) }    // <-- this code fixes the problem
    }
}

const unsafe fn virtualize_my_trait<T>(level: u8, obj: &T) -> &dyn MyTrait
where
    T: MyTrait + 'static,
{
    const fn gen_vtable_ptr<T, const L: u8>() -> *const ()
    where
        T: MyTrait + 'static,
    {
        let [_, vtable] = unsafe {
            std::mem::transmute::<*const dyn MyTrait, [*const (); 2]>(std::ptr::null::<
                VirtualWrapper<T, L>,
            >())
        };
        vtable
    }

    struct Vtable<T>(PhantomData<T>);

    impl<T> Vtable<T>
    where
        T: MyTrait + 'static,
    {
        const LEVELS: [*const (); 2] = [gen_vtable_ptr::<T, 1>(), gen_vtable_ptr::<T, 2>()];
    }

    let vtable = Vtable::<T>::LEVELS[(level != 0) as usize];

    let data = obj as *const T as *const ();
    let ptr: *const dyn MyTrait = std::mem::transmute([data, vtable]);

    &*ptr
}

struct SomeData<const N: usize>([u8; N]);

impl<const N: usize> MyTrait for SomeData<N> {
    fn virtualize(&self) -> &dyn MyTrait {
        VirtualWrapper::<Self, 0>::wrap(self)
    }
}

fn main() {
    let test = SomeData([0; 256]);
    test.virtualize();
}

Meta

rustc --version --verbose:

rustc 1.71.1 (eb26296b5 2023-08-03) running on x86_64-unknown-linux-gnu

Error output

error: reached the recursion limit finding the struct tail for `[u8; 256]`
  |
  = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`

error: internal compiler error: compiler/rustc_monomorphize/src/collector.rs:799:54: collection encountered polymorphic constant: Unevaluated(UnevaluatedConst { def: DefId(0:31 ~ playground[07cd]::virtualize_my_trait::{impl#0}::LEVELS), substs: [VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<VirtualWrapper<SomeData<256>, 0>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>, 1>], promoted: None }, [*const (); 2])
  --> src/main.rs:46:18
   |
46 |     let vtable = Vtable::<T>::LEVELS[(level != 0) as usize];
   |                  ^^^^^^^^^^^^^^^^^^^

thread 'rustc' panicked at 'Box<dyn Any>', /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/compiler/rustc_errors/src/lib.rs:995:33
Backtrace

stack backtrace:
   0:     0x7f3ea2449071 - std::backtrace_rs::backtrace::libunwind::trace::h782cc21a5acaf6cb
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f3ea2449071 - std::backtrace_rs::backtrace::trace_unsynchronized::hc579eb24ab204515
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f3ea2449071 - std::sys_common::backtrace::_print_fmt::h7223525cfdbacda2
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f3ea2449071 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hbd7d55b7108d2ab8
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f3ea24a8d9f - core::fmt::rt::Argument::fmt::hb4f4a02b9bd9dd49
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/core/src/fmt/rt.rs:138:9
   5:     0x7f3ea24a8d9f - core::fmt::write::h6d54cd7c9e155ec5
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/core/src/fmt/mod.rs:1094:21
   6:     0x7f3ea243c311 - std::io::Write::write_fmt::h6a453a71c692f63b
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/io/mod.rs:1713:15
   7:     0x7f3ea2448e85 - std::sys_common::backtrace::_print::h1cbaa8b42678f928
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7f3ea2448e85 - std::sys_common::backtrace::print::h4ddf81241a51b337
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7f3ea244bb47 - std::panicking::default_hook::{{closure}}::hff91f1f484ade5cd
  10:     0x7f3ea244b934 - std::panicking::default_hook::h21f14afd59f7aef9
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/panicking.rs:288:9
  11:     0x7f3ea55d60cb - <rustc_driver_impl[a4629e012e48ffc1]::install_ice_hook::{closure#0} as core[95ee2d8017598cc7]::ops::function::FnOnce<(&core[95ee2d8017598cc7]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0}
  12:     0x7f3ea244c28d - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::ha1f76bdae3c27ab6
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/alloc/src/boxed.rs:1999:9
  13:     0x7f3ea244c28d - std::panicking::rust_panic_with_hook::h45f66047b14c555c
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/panicking.rs:709:13
  14:     0x7f3ea5d6d811 - std[edecf719d62c0e6b]::panicking::begin_panic::<rustc_errors[f0469ee7e5c3d3ff]::ExplicitBug>::{closure#0}
  15:     0x7f3ea5d6d696 - std[edecf719d62c0e6b]::sys_common::backtrace::__rust_end_short_backtrace::<std[edecf719d62c0e6b]::panicking::begin_panic<rustc_errors[f0469ee7e5c3d3ff]::ExplicitBug>::{closure#0}, !>
  16:     0x7f3ea5d5d606 - std[edecf719d62c0e6b]::panicking::begin_panic::<rustc_errors[f0469ee7e5c3d3ff]::ExplicitBug>
  17:     0x7f3ea5d5d252 - <rustc_errors[f0469ee7e5c3d3ff]::HandlerInner>::span_bug::<rustc_span[c2ff3b0962b898e5]::span_encoding::Span, alloc[dfb0c3e97fe8b89b]::string::String>
  18:     0x7f3ea5d5d0e6 - <rustc_errors[f0469ee7e5c3d3ff]::Handler>::span_bug::<rustc_span[c2ff3b0962b898e5]::span_encoding::Span, alloc[dfb0c3e97fe8b89b]::string::String>
  19:     0x7f3ea5d5d916 - rustc_middle[c682e143f9d710c7]::util::bug::opt_span_bug_fmt::<rustc_span[c2ff3b0962b898e5]::span_encoding::Span>::{closure#0}
  20:     0x7f3ea5d5d94a - rustc_middle[c682e143f9d710c7]::ty::context::tls::with_opt::<rustc_middle[c682e143f9d710c7]::util::bug::opt_span_bug_fmt<rustc_span[c2ff3b0962b898e5]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  21:     0x7f3ea5d5d6ea - rustc_middle[c682e143f9d710c7]::ty::context::tls::with_context_opt::<rustc_middle[c682e143f9d710c7]::ty::context::tls::with_opt<rustc_middle[c682e143f9d710c7]::util::bug::opt_span_bug_fmt<rustc_span[c2ff3b0962b898e5]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  22:     0x7f3ea5d5d694 - rustc_middle[c682e143f9d710c7]::util::bug::span_bug_fmt::<rustc_span[c2ff3b0962b898e5]::span_encoding::Span>
  23:     0x7f3ea44bd6a1 - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_neighbours
  24:     0x7f3ea44ab519 - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  25:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  26:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  27:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  28:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  29:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  30:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  31:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  32:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  33:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  34:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  35:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  36:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  37:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  38:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  39:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  40:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  41:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  42:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  43:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  44:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  45:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  46:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  47:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  48:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  49:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  50:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  51:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  52:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  53:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  54:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  55:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  56:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  57:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  58:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  59:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  60:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  61:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  62:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  63:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  64:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  65:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  66:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  67:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  68:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  69:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  70:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  71:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  72:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  73:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  74:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  75:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  76:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  77:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  78:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  79:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  80:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  81:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  82:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  83:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  84:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  85:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  86:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  87:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  88:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  89:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  90:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  91:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  92:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  93:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  94:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  95:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  96:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  97:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  98:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
  99:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 100:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 101:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 102:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 103:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 104:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 105:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 106:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 107:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 108:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 109:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 110:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 111:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 112:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 113:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 114:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 115:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 116:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 117:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 118:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 119:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 120:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 121:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 122:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 123:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 124:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 125:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 126:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 127:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 128:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 129:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 130:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 131:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 132:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 133:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 134:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 135:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 136:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 137:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 138:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 139:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 140:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 141:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 142:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 143:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 144:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 145:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 146:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 147:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 148:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 149:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 150:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 151:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 152:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 153:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 154:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 155:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 156:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 157:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 158:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 159:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 160:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 161:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 162:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 163:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 164:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 165:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 166:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 167:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 168:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 169:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 170:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 171:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 172:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 173:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 174:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 175:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 176:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 177:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 178:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 179:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 180:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 181:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 182:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 183:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 184:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 185:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 186:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 187:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 188:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 189:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 190:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 191:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 192:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 193:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 194:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 195:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 196:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 197:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 198:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 199:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 200:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 201:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 202:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 203:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 204:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 205:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 206:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 207:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 208:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 209:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 210:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 211:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 212:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 213:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 214:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 215:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 216:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 217:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 218:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 219:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 220:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 221:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 222:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 223:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 224:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 225:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 226:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 227:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 228:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 229:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 230:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 231:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 232:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 233:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 234:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 235:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 236:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 237:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 238:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 239:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 240:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 241:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 242:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 243:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 244:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 245:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 246:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 247:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 248:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 249:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 250:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 251:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 252:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 253:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 254:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 255:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 256:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 257:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 258:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 259:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 260:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 261:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 262:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 263:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 264:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 265:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 266:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 267:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 268:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 269:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 270:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 271:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 272:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 273:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 274:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 275:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 276:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 277:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 278:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 279:     0x7f3ea44ab96a - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_items_rec
 280:     0x7f3ea4999ce7 - rustc_data_structures[8548742d45a93e9b]::sync::par_for_each_in::<alloc[dfb0c3e97fe8b89b]::vec::Vec<rustc_middle[c682e143f9d710c7]::mir::mono::MonoItem>, rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
 281:     0x7f3ea49999a0 - <rustc_session[b7d9e6f930bc0bce]::session::Session>::time::<(), rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_crate_mono_items::{closure#1}>
 282:     0x7f3ea49995c0 - rustc_monomorphize[9472dad9f96b1e7f]::collector::collect_crate_mono_items
 283:     0x7f3ea49979a7 - rustc_monomorphize[9472dad9f96b1e7f]::partitioning::collect_and_partition_mono_items
 284:     0x7f3ea4be45b9 - rustc_query_impl[6e478c483b869c25]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[6e478c483b869c25]::query_impl::collect_and_partition_mono_items::dynamic_query::{closure#2}::{closure#0}, rustc_middle[c682e143f9d710c7]::query::erase::Erased<[u8; 24usize]>>
 285:     0x7f3ea4be458b - <rustc_query_impl[6e478c483b869c25]::query_impl::collect_and_partition_mono_items::dynamic_query::{closure#2} as core[95ee2d8017598cc7]::ops::function::FnOnce<(rustc_middle[c682e143f9d710c7]::ty::context::TyCtxt, ())>>::call_once
 286:     0x7f3ea4d77f3c - rustc_query_system[93b6edfdc601e81a]::query::plumbing::try_execute_query::<rustc_query_impl[6e478c483b869c25]::DynamicConfig<rustc_query_system[93b6edfdc601e81a]::query::caches::SingleCache<rustc_middle[c682e143f9d710c7]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[6e478c483b869c25]::plumbing::QueryCtxt, false>
 287:     0x7f3ea4d77cd4 - rustc_query_impl[6e478c483b869c25]::query_impl::collect_and_partition_mono_items::get_query_non_incr::__rust_end_short_backtrace
 288:     0x7f3ea4c1b769 - rustc_codegen_ssa[b3c509f34a4358db]::base::codegen_crate::<rustc_codegen_llvm[6b638aae027b3fd2]::LlvmCodegenBackend>
 289:     0x7f3ea4c1b54b - <rustc_codegen_llvm[6b638aae027b3fd2]::LlvmCodegenBackend as rustc_codegen_ssa[b3c509f34a4358db]::traits::backend::CodegenBackend>::codegen_crate
 290:     0x7f3ea48350a2 - <rustc_session[b7d9e6f930bc0bce]::session::Session>::time::<alloc[dfb0c3e97fe8b89b]::boxed::Box<dyn core[95ee2d8017598cc7]::any::Any>, rustc_interface[c65fde630b50e8]::passes::start_codegen::{closure#0}>
 291:     0x7f3ea4834beb - rustc_interface[c65fde630b50e8]::passes::start_codegen
 292:     0x7f3ea4832cdd - <rustc_middle[c682e143f9d710c7]::ty::context::GlobalCtxt>::enter::<<rustc_interface[c65fde630b50e8]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[95ee2d8017598cc7]::result::Result<alloc[dfb0c3e97fe8b89b]::boxed::Box<dyn core[95ee2d8017598cc7]::any::Any>, rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>
 293:     0x7f3ea4830e8d - <rustc_interface[c65fde630b50e8]::queries::Queries>::ongoing_codegen
 294:     0x7f3ea48304a9 - <rustc_interface[c65fde630b50e8]::interface::Compiler>::enter::<rustc_driver_impl[a4629e012e48ffc1]::run_compiler::{closure#1}::{closure#2}, core[95ee2d8017598cc7]::result::Result<core[95ee2d8017598cc7]::option::Option<rustc_interface[c65fde630b50e8]::queries::Linker>, rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>
 295:     0x7f3ea482e5c4 - rustc_span[c2ff3b0962b898e5]::set_source_map::<core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>, rustc_interface[c65fde630b50e8]::interface::run_compiler<core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>, rustc_driver_impl[a4629e012e48ffc1]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
 296:     0x7f3ea482e1a1 - <scoped_tls[24938f349c8d16f0]::ScopedKey<rustc_span[c2ff3b0962b898e5]::SessionGlobals>>::set::<rustc_interface[c65fde630b50e8]::interface::run_compiler<core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>, rustc_driver_impl[a4629e012e48ffc1]::run_compiler::{closure#1}>::{closure#0}, core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>
 297:     0x7f3ea482d796 - std[edecf719d62c0e6b]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[c65fde630b50e8]::util::run_in_thread_pool_with_globals<rustc_interface[c65fde630b50e8]::interface::run_compiler<core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>, rustc_driver_impl[a4629e012e48ffc1]::run_compiler::{closure#1}>::{closure#0}, core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>
 298:     0x7f3ea4e854c5 - <<std[edecf719d62c0e6b]::thread::Builder>::spawn_unchecked_<rustc_interface[c65fde630b50e8]::util::run_in_thread_pool_with_globals<rustc_interface[c65fde630b50e8]::interface::run_compiler<core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>, rustc_driver_impl[a4629e012e48ffc1]::run_compiler::{closure#1}>::{closure#0}, core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[95ee2d8017598cc7]::result::Result<(), rustc_span[c2ff3b0962b898e5]::ErrorGuaranteed>>::{closure#1} as core[95ee2d8017598cc7]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
 299:     0x7f3ea24567b5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::he3e5dbdfabe0b668
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/alloc/src/boxed.rs:1985:9
 300:     0x7f3ea24567b5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h246f7c7964633611
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/alloc/src/boxed.rs:1985:9
 301:     0x7f3ea24567b5 - std::sys::unix::thread::Thread::new::thread_start::hadf9e3501ff0df23
                               at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sys/unix/thread.rs:108:17
 302:     0x7f3ea2326609 - start_thread
 303:     0x7f3ea2249133 - clone
 304:                0x0 - <unknown>

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.71.1 (eb26296b5 2023-08-03) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: could not compile `playground` (bin "playground") due to previous error

@Rexagon Rexagon added C-bug Category: This is a bug. 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. labels Aug 4, 2023
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Aug 4, 2023
@saethlin saethlin removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Aug 4, 2023
@chenyukang chenyukang self-assigned this Aug 5, 2023
@chenyukang chenyukang removed their assignment Sep 3, 2023
@matthiaskrgr matthiaskrgr added the S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. label Apr 15, 2024
@bors bors closed this as completed in 4cadb5d Jan 14, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Jan 14, 2025
Rollup merge of rust-lang#135464 - lukas-code:project-infinite-to-error, r=FedericoBruzzone,oli-obk

fix ICE with references to infinite structs in consts

fixes rust-lang#114484

Normalizing `<Type as Pointee>::Metadata` may emit a (non-fatal) error during trait selection if finding the struct tail of `Type` hits the recursion limit. When this happens, prior this PR, we would treat the projection as rigid, i.e. don't normalize it further. This PR changes it so that we normalize to `ty::Error` instead.

This is important, because to compute the layout of `&Type` we need to compute the layout of `<Type as Pointee>::Metadata`

https://github.com/rust-lang/rust/blob/2ae9916816a448fcaab3b2da461de754eda0055a/compiler/rustc_ty_utils/src/layout.rs#L247-L273

and computing the layout of a rigid alias will (correctly) fail and needs to report an error to the user. For example:

```rust
trait Project {
    type Assoc;
}

fn foo<T: Project>() {
    [(); {
        let _: Option<T::Assoc> = None;
                   // ^^^^^^^^ this projection is rigid, so we can't know it's layout
        0
    }];
}
```

```
error: constant expression depends on a generic parameter
  --> src/lib.rs:6:10
   |
6  |       [(); {
   |  __________^
7  | |         let _: Option<T::Assoc> = None;
8  | |                    // ^^^^^^^^ this projection is rigid, so we can't know it's layout
9  | |         0
10 | |     }];
   | |_____^
   |
   = note: this may fail depending on what value the parameter takes
```

For non-generic rigid projections we will currently ICE, because we incorrectly assume that `LayoutError::Unknown` means that a const must be generic (rust-lang#135138). This is being fixed and turned into a proper error in rust-lang#135158.

```rust
#![feature(trivial_bounds)]

trait Project {
    type Assoc;
}

fn foo()
where
    u8: Project,
{
    [(); {
        let _: Option<<u8 as Project>::Assoc> = None; // ICEs currently, but will be an error
        0
    }];
}
```

However, if we hit the recursion limit when normalizing `<Type as Pointee>::Metadata` we don't want to report a layout error, because we already emitted the recursion error. So by normalizing to `ty::Error` here, we get a `LayoutError::ReferencesError` instead of a `LayoutError::Unknown` and don't report the layout error to the user.
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
5 participants