rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.04k stars 12.54k forks source link

ICE related to errors with assicated types? #120254

Open epage opened 8 months ago

epage commented 8 months ago

Not narrowed down the root cause but you can access it at this branch: https://github.com/epage/winnow/tree/ice

thread 'rustc' panicked at /rust/deps/ena-0.14.2/src/snapshot_vec.rs:199:10:
index out of bounds: the len is 3 but the index is 3
stack backtrace:
   0:     0x74746f97311e - std::backtrace_rs::backtrace::libunwind::trace::h4067d8f23ef73af7
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x74746f97311e - std::backtrace_rs::backtrace::trace_unsynchronized::h89ae393c12360c4b
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x74746f97311e - std::backtrace::Backtrace::create::h1fa0dac89ef0195f
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/backtrace.rs:331:13
   3:     0x74746f973060 - std::backtrace::Backtrace::force_capture::he07566a4a758fec5
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/backtrace.rs:312:9
   4:     0x7474727731e3 - std[527ea380d29b3bb8]::panicking::update_hook::<alloc[6b466cb0844b2873]::boxed::Box<rustc_driver_impl[6c22f5ce71ffad33]::install_ice_hook::{closure#0}>>::{closure#0}
   5:     0x74746f98efd6 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h88aaba9f73ef76d2
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/alloc/src/boxed.rs:2030:9
   6:     0x74746f98efd6 - std::panicking::rust_panic_with_hook::h3fa70ef338e3ca38
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/panicking.rs:785:13
   7:     0x74746f98ed22 - std::panicking::begin_panic_handler::{{closure}}::h17ce3f78d1ac8edd
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/panicking.rs:659:13
   8:     0x74746f98c216 - std::sys_common::backtrace::__rust_end_short_backtrace::h0e24285f32759010
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/sys_common/backtrace.rs:171:18
   9:     0x74746f98ea74 - rust_begin_unwind
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/panicking.rs:647:5
  10:     0x74746f9dac15 - core::panicking::panic_fmt::h63e5a0bbbcbf33f4
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/core/src/panicking.rs:72:14
  11:     0x74746f9dae52 - core::panicking::panic_bounds_check::h6615890d2d5cc471
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/core/src/panicking.rs:208:5
  12:     0x747473a00ae4 - <rustc_infer[7a9c6c949ce44128]::infer::ShallowResolver>::fold_infer_ty
  13:     0x747473a1b192 - <rustc_middle[da6f13b473d70f15]::ty::Ty as rustc_type_ir[986702707f25fb0]::fold::TypeSuperFoldable<rustc_middle[da6f13b473d70f15]::ty::context::TyCtxt>>::try_super_fold_with::<rustc_infer[7a9c6c949ce44128]::infer::resolve::OpportunisticVarResolver>
  14:     0x7474742901e7 - <rustc_infer[7a9c6c949ce44128]::infer::InferCtxt>::resolve_vars_if_possible::<rustc_middle[da6f13b473d70f15]::ty::sty::Binder<rustc_middle[da6f13b473d70f15]::ty::TraitPredicate>>
  15:     0x7474732444c4 - <rustc_infer[7a9c6c949ce44128]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[b44b4560a4a85103]::traits::error_reporting::suggestions::TypeErrCtxtExt>::note_obligation_cause_code::<rustc_middle[da6f13b473d70f15]::ty::Predicate>
  16:     0x747473261b05 - <rustc_infer[7a9c6c949ce44128]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[b44b4560a4a85103]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::note_obligation_cause
  17:     0x747473254903 - <rustc_infer[7a9c6c949ce44128]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[b44b4560a4a85103]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_selection_error
  18:     0x74747327dd73 - <rustc_infer[7a9c6c949ce44128]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[b44b4560a4a85103]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::report_fulfillment_error
  19:     0x747473251e05 - <rustc_infer[7a9c6c949ce44128]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[b44b4560a4a85103]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_fulfillment_errors
  20:     0x747474120e14 - rustc_hir_analysis[1751c5e472c31a11]::check::wfcheck::check_associated_item
  21:     0x747473f6a9b1 - rustc_hir_analysis[1751c5e472c31a11]::check::wfcheck::check_well_formed
  22:     0x747473f698b3 - rustc_query_impl[7c58aac1d8863b11]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[7c58aac1d8863b11]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>
  23:     0x747473f65382 - rustc_query_system[676e1642cebc9155]::query::plumbing::try_execute_query::<rustc_query_impl[7c58aac1d8863b11]::DynamicConfig<rustc_query_system[676e1642cebc9155]::query::caches::VecCache<rustc_hir[eee0a79af6a0ba55]::hir_id::OwnerId, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[7c58aac1d8863b11]::plumbing::QueryCtxt, true>
  24:     0x747473f64e7f - rustc_query_impl[7c58aac1d8863b11]::query_impl::check_well_formed::get_query_incr::__rust_end_short_backtrace
  25:     0x747473f6694c - rustc_hir_analysis[1751c5e472c31a11]::check::wfcheck::check_mod_type_wf
  26:     0x747473f666d3 - rustc_query_impl[7c58aac1d8863b11]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[7c58aac1d8863b11]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>
  27:     0x7474747b68b1 - rustc_query_system[676e1642cebc9155]::query::plumbing::try_execute_query::<rustc_query_impl[7c58aac1d8863b11]::DynamicConfig<rustc_query_system[676e1642cebc9155]::query::caches::DefaultCache<rustc_span[bf8e9607c327fbe2]::def_id::LocalModDefId, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[7c58aac1d8863b11]::plumbing::QueryCtxt, true>
  28:     0x74747463de42 - rustc_query_impl[7c58aac1d8863b11]::query_impl::check_mod_type_wf::get_query_incr::__rust_end_short_backtrace
  29:     0x747473c404cf - rustc_middle[da6f13b473d70f15]::query::plumbing::query_ensure_error_guaranteed::<rustc_query_system[676e1642cebc9155]::query::caches::DefaultCache<rustc_span[bf8e9607c327fbe2]::def_id::LocalModDefId, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>, ()>
  30:     0x747473c40e0b - rustc_hir_analysis[1751c5e472c31a11]::check_crate
  31:     0x747474353dd2 - rustc_interface[78f87c0224bfbfb7]::passes::analysis
  32:     0x747474353a1f - rustc_query_impl[7c58aac1d8863b11]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[7c58aac1d8863b11]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>
  33:     0x747474455967 - rustc_query_system[676e1642cebc9155]::query::plumbing::try_execute_query::<rustc_query_impl[7c58aac1d8863b11]::DynamicConfig<rustc_query_system[676e1642cebc9155]::query::caches::SingleCache<rustc_middle[da6f13b473d70f15]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[7c58aac1d8863b11]::plumbing::QueryCtxt, true>
  34:     0x747474455560 - rustc_query_impl[7c58aac1d8863b11]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  35:     0x747474778eb3 - rustc_interface[78f87c0224bfbfb7]::interface::run_compiler::<core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>, rustc_driver_impl[6c22f5ce71ffad33]::run_compiler::{closure#0}>::{closure#0}
  36:     0x747474a0c646 - std[527ea380d29b3bb8]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[78f87c0224bfbfb7]::util::run_in_thread_with_globals<rustc_interface[78f87c0224bfbfb7]::util::run_in_thread_pool_with_globals<rustc_interface[78f87c0224bfbfb7]::interface::run_compiler<core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>, rustc_driver_impl[6c22f5ce71ffad33]::run_compiler::{closure#0}>::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>
  37:     0x747474a0c473 - <<std[527ea380d29b3bb8]::thread::Builder>::spawn_unchecked_<rustc_interface[78f87c0224bfbfb7]::util::run_in_thread_with_globals<rustc_interface[78f87c0224bfbfb7]::util::run_in_thread_pool_with_globals<rustc_interface[78f87c0224bfbfb7]::interface::run_compiler<core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>, rustc_driver_impl[6c22f5ce71ffad33]::run_compiler::{closure#0}>::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[57901691165f9a3a]::result::Result<(), rustc_span[bf8e9607c327fbe2]::ErrorGuaranteed>>::{closure#1} as core[57901691165f9a3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  38:     0x74746f9985c5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h9bf7d9fa34287c30
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/alloc/src/boxed.rs:2016:9
  39:     0x74746f9985c5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h84981e7d5757c1a5
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/alloc/src/boxed.rs:2016:9
  40:     0x74746f9985c5 - std::sys::pal::unix::thread::Thread::new::thread_start::hffa2b0713ff03dc2
                               at /rustc/ef71f1047e04438181d7cb925a833e2ada6ab390/library/std/src/sys/pal/unix/thread.rs:108:17
  41:     0x74746f694ac3 - start_thread
                               at ./nptl/pthread_create.c:442:8
  42:     0x74746f726660 - clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
  43:                0x0 - <unknown>

rustc version: 1.77.0-nightly (ef71f1047 2024-01-21)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [check_well_formed] checking that `stream::<impl at src/stream/mod.rs:1386:1: 1388:15>::record_err` is well-formed
#1 [check_mod_type_wf] checking that types are well-formed in module `stream`
#2 [analysis] running analysis passes on this crate
end of query stack

This is also reproducible on stable 1.75.0

Teapot4195 commented 7 months ago

MCVE acquired

trait Dbg {}

struct Foo<I, E> {
    input: I,
    errors: E,
}

trait Bar: Offset<<Self as Bar>::Checkpoint> {
    type Checkpoint;
}

impl<I: Bar, E: Dbg> Bar for Foo<I, E> {
    type Checkpoint = I::Checkpoint;
}

trait Offset<Start = Self> {}

impl<I: Bar, E: Dbg> Offset<<Foo<I, E> as Bar>::Checkpoint> for Foo<I, E> {}

impl<I: Bar, E> Foo<I, E> {
    fn record_err(self, _: <Self as Bar>::Checkpoint) -> () {}
}

@rustbot -E-needs-mcve

Teapot4195 commented 7 months ago

@rustbot label -E-needs-mcve

It only took 3 tries!

epage commented 7 months ago

Thanks!