rust-lang / rust-lang/rust

ICE+errors: associated_const_equality: normalize_erasing_regions.rs: Failed to normalize Alias(Projection, _)

Open
#141,489 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug E-needs-mcve F-associated_const_equality F-generic_const_exprs I-ICE P-low S-has-bisection T-compiler
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

This is a regression that happened after updating the rust nightly toolchain today to version 3e674b06b 2025-05-23. Suddenly, the compiler is not able to reason with associated const equality at all, and i get a rust-ICE that fails checking if an associated type is well formed.

Code

real_time_fir_iir_filters as of commit 687912d: https://github.com/sigurd4/real_time_fir_iir_filters/commit/687912de7805ef8cb7cb90584535be328b526fd8

Meta

rustc --version --verbose:

rustc 1.89.0-nightly (3e674b06b 2025-05-23)
binary: rustc
commit-hash: 3e674b06b5c74adea662bd0b0b06450757994b16
commit-date: 2025-05-23
host: x86_64-unknown-linux-gnu
release: 1.89.0-nightly
LLVM version: 20.1.5
Error output
thread 'rustc' panicked at compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:171:13:
Box<dyn Any>
stack backtrace:
   0:     0x705a98ad9ee5 - std::backtrace::Backtrace::create::hfa425f8c6118c291
   1:     0x705a96f58655 - std::backtrace::Backtrace::force_capture::hc89ba712c3edf9d4
   2:     0x705a95f9b841 - std[dddea0bc0c38a8db]::panicking::update_hook::<alloc[ad07e7cbb7f1de4e]::boxed::Box<rustc_driver_impl[40f87d5870cfacca]::install_ice_hook::{closure#1}>>::{closure#0}
   3:     0x705a96f72583 - std::panicking::rust_panic_with_hook::hedd3f60f85824998
   4:     0x705a95fd6f01 - std[dddea0bc0c38a8db]::panicking::begin_panic::<rustc_errors[ddb65c6d6f619c9c]::ExplicitBug>::{closure#0}
   5:     0x705a95fcaf36 - std[dddea0bc0c38a8db]::sys::backtrace::__rust_end_short_backtrace::<std[dddea0bc0c38a8db]::panicking::begin_panic<rustc_errors[ddb65c6d6f619c9c]::ExplicitBug>::{closure#0}, !>
   6:     0x705a95fcadbb - std[dddea0bc0c38a8db]::panicking::begin_panic::<rustc_errors[ddb65c6d6f619c9c]::ExplicitBug>
   7:     0x705a95fe1551 - <rustc_errors[ddb65c6d6f619c9c]::diagnostic::BugAbort as rustc_errors[ddb65c6d6f619c9c]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   8:     0x705a9664be9a - rustc_middle[39ac76d544e79577]::util::bug::opt_span_bug_fmt::<rustc_span[c5073483e6fe6d4e]::span_encoding::Span>::{closure#0}
   9:     0x705a9662627a - rustc_middle[39ac76d544e79577]::ty::context::tls::with_opt::<rustc_middle[39ac76d544e79577]::util::bug::opt_span_bug_fmt<rustc_span[c5073483e6fe6d4e]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  10:     0x705a966260eb - rustc_middle[39ac76d544e79577]::ty::context::tls::with_context_opt::<rustc_middle[39ac76d544e79577]::ty::context::tls::with_opt<rustc_middle[39ac76d544e79577]::util::bug::opt_span_bug_fmt<rustc_span[c5073483e6fe6d4e]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  11:     0x705a9388aa70 - rustc_middle[39ac76d544e79577]::util::bug::bug_fmt
  12:     0x705a97e56e5a - <rustc_middle[39ac76d544e79577]::ty::normalize_erasing_regions::NormalizeAfterErasingRegionsFolder as rustc_type_ir[ad99d0ade262f0a7]::fold::TypeFolder<rustc_middle[39ac76d544e79577]::ty::context::TyCtxt>>::fold_ty
  13:     0x705a97ebc030 - rustc_ty_utils[8532ffd2d527787a]::instance::resolve_instance_raw
  14:     0x705a97ebb472 - rustc_query_impl[31296628a992b875]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[31296628a992b875]::query_impl::resolve_instance_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 32usize]>>
  15:     0x705a97ea566a - rustc_query_system[71c12886ffe7ba46]::query::plumbing::try_execute_query::<rustc_query_impl[31296628a992b875]::DynamicConfig<rustc_query_system[71c12886ffe7ba46]::query::caches::DefaultCache<rustc_middle[39ac76d544e79577]::ty::PseudoCanonicalInput<(rustc_span[c5073483e6fe6d4e]::def_id::DefId, &rustc_middle[39ac76d544e79577]::ty::list::RawList<(), rustc_middle[39ac76d544e79577]::ty::generic_args::GenericArg>)>, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 32usize]>>, false, false, false>, rustc_query_impl[31296628a992b875]::plumbing::QueryCtxt, true>
  16:     0x705a97ea4edb - rustc_query_impl[31296628a992b875]::query_impl::resolve_instance_raw::get_query_incr::__rust_end_short_backtrace
  17:     0x705a97681e64 - <rustc_middle[39ac76d544e79577]::ty::instance::Instance>::try_resolve
  18:     0x705a981c0c98 - <rustc_middle[39ac76d544e79577]::ty::context::TyCtxt>::const_eval_resolve_for_typeck
  19:     0x705a981c2301 - rustc_trait_selection[b780273fca010d7d]::traits::try_evaluate_const
  20:     0x705a97716983 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicate_recursively
  21:     0x705a977159df - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicates_recursively::<thin_vec[6b3c3df00a28182b]::ThinVec<rustc_infer[b943a2e86216d821]::traits::Obligation<rustc_middle[39ac76d544e79577]::ty::predicate::Predicate>>>
  22:     0x705a97716020 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicate_recursively
  23:     0x705a977159df - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicates_recursively::<thin_vec[6b3c3df00a28182b]::ThinVec<rustc_infer[b943a2e86216d821]::traits::Obligation<rustc_middle[39ac76d544e79577]::ty::predicate::Predicate>>>
  24:     0x705a97716783 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicate_recursively
  25:     0x705a977159df - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicates_recursively::<thin_vec[6b3c3df00a28182b]::ThinVec<rustc_infer[b943a2e86216d821]::traits::Obligation<rustc_middle[39ac76d544e79577]::ty::predicate::Predicate>>>
  26:     0x705a97716020 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicate_recursively
  27:     0x705a977159df - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_predicates_recursively::<thin_vec[6b3c3df00a28182b]::ThinVec<rustc_infer[b943a2e86216d821]::traits::Obligation<rustc_middle[39ac76d544e79577]::ty::predicate::Predicate>>>
  28:     0x705a97718a74 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::evaluate_candidate::{closure#0}::{closure#0}
  29:     0x705a984ea6e1 - <rustc_trait_selection[b780273fca010d7d]::traits::select::SelectionContext>::candidate_from_obligation::{closure#0}::{closure#0}
  30:     0x705a97fc9474 - <rustc_trait_selection[b780273fca010d7d]::traits::fulfill::FulfillProcessor as rustc_data_structures[7330a1b528a7fb9e]::obligation_forest::ObligationProcessor>::process_obligation
  31:     0x705a97606fd5 - <rustc_data_structures[7330a1b528a7fb9e]::obligation_forest::ObligationForest<rustc_trait_selection[b780273fca010d7d]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[b780273fca010d7d]::traits::fulfill::FulfillProcessor>
  32:     0x705a97ce79ab - <rustc_trait_selection[b780273fca010d7d]::traits::fulfill::FulfillmentContext<rustc_trait_selection[b780273fca010d7d]::traits::FulfillmentError> as rustc_infer[b943a2e86216d821]::traits::engine::TraitEngine<rustc_trait_selection[b780273fca010d7d]::traits::FulfillmentError>>::select_all_or_error
  33:     0x705a97f15102 - rustc_hir_analysis[331e481bef3bedb8]::check::wfcheck::enter_wf_checking_ctxt::<rustc_hir_analysis[331e481bef3bedb8]::check::wfcheck::check_associated_item::{closure#0}>
  34:     0x705a97efad84 - rustc_hir_analysis[331e481bef3bedb8]::check::wfcheck::check_well_formed
  35:     0x705a97ef874b - rustc_query_impl[31296628a992b875]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[31296628a992b875]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 1usize]>>
  36:     0x705a9797756d - rustc_query_system[71c12886ffe7ba46]::query::plumbing::try_execute_query::<rustc_query_impl[31296628a992b875]::DynamicConfig<rustc_data_structures[7330a1b528a7fb9e]::vec_cache::VecCache<rustc_span[c5073483e6fe6d4e]::def_id::LocalDefId, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[71c12886ffe7ba46]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[31296628a992b875]::plumbing::QueryCtxt, true>
  37:     0x705a97976cfa - rustc_query_impl[31296628a992b875]::query_impl::check_well_formed::get_query_incr::__rust_end_short_backtrace
  38:     0x705a97ef53c2 - rustc_hir_analysis[331e481bef3bedb8]::check::wfcheck::check_mod_type_wf
  39:     0x705a97ef4e5f - rustc_query_impl[31296628a992b875]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[31296628a992b875]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 1usize]>>
  40:     0x705a986802af - rustc_query_system[71c12886ffe7ba46]::query::plumbing::try_execute_query::<rustc_query_impl[31296628a992b875]::DynamicConfig<rustc_query_system[71c12886ffe7ba46]::query::caches::DefaultCache<rustc_span[c5073483e6fe6d4e]::def_id::LocalModDefId, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[31296628a992b875]::plumbing::QueryCtxt, true>
  41:     0x705a98680d83 - rustc_query_impl[31296628a992b875]::query_impl::check_mod_type_wf::get_query_incr::__rust_end_short_backtrace
  42:     0x705a97809877 - rustc_hir_analysis[331e481bef3bedb8]::check_crate
  43:     0x705a9780ad45 - rustc_interface[3a0a2c43e50c5194]::passes::run_required_analyses
  44:     0x705a9852c19e - rustc_interface[3a0a2c43e50c5194]::passes::analysis
  45:     0x705a9852c175 - rustc_query_impl[31296628a992b875]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[31296628a992b875]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 0usize]>>
  46:     0x705a988cf6c4 - rustc_query_system[71c12886ffe7ba46]::query::plumbing::try_execute_query::<rustc_query_impl[31296628a992b875]::DynamicConfig<rustc_query_system[71c12886ffe7ba46]::query::caches::SingleCache<rustc_middle[39ac76d544e79577]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[31296628a992b875]::plumbing::QueryCtxt, true>
  47:     0x705a988cefe8 - rustc_query_impl[31296628a992b875]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  48:     0x705a9872ae87 - rustc_interface[3a0a2c43e50c5194]::passes::create_and_enter_global_ctxt::<core[a1eebbb7364c739]::option::Option<rustc_interface[3a0a2c43e50c5194]::queries::Linker>, rustc_driver_impl[40f87d5870cfacca]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  49:     0x705a9871c60f - rustc_interface[3a0a2c43e50c5194]::interface::run_compiler::<(), rustc_driver_impl[40f87d5870cfacca]::run_compiler::{closure#0}>::{closure#1}
  50:     0x705a986c5706 - std[dddea0bc0c38a8db]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[3a0a2c43e50c5194]::util::run_in_thread_with_globals<rustc_interface[3a0a2c43e50c5194]::util::run_in_thread_pool_with_globals<rustc_interface[3a0a2c43e50c5194]::interface::run_compiler<(), rustc_driver_impl[40f87d5870cfacca]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  51:     0x705a986c53ab - <<std[dddea0bc0c38a8db]::thread::Builder>::spawn_unchecked_<rustc_interface[3a0a2c43e50c5194]::util::run_in_thread_with_globals<rustc_interface[3a0a2c43e50c5194]::util::run_in_thread_pool_with_globals<rustc_interface[3a0a2c43e50c5194]::interface::run_compiler<(), rustc_driver_impl[40f87d5870cfacca]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[a1eebbb7364c739]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  52:     0x705a986c66fd - std::sys::pal::unix::thread::Thread::new::thread_start::h337190b46df16ff4
  53:     0x705a924a57eb - <unknown>
  54:     0x705a9252918c - <unknown>
  55:                0x0 - <unknown>


rustc version: 1.89.0-nightly (3e674b06b 2025-05-23)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [resolve_instance_raw] resolving instance `<param::val::omega::Omega<f32> as param::base::chebyshev::ChebyshevFilterParamBase<<f32 as param::conf::elliptic::EllipticFilterConf>::Conf>>::TYPE`
#1 [check_well_formed] checking that `param::conf::elliptic::EllipticFilterConf::Conf` is well-formed
#2 [check_mod_type_wf] checking that types are well-formed in module `param::conf::elliptic`
#3 [analysis] running analysis passes on this crate
end of query stack
Backtrace

I can't compile, so i can't see any backtrace for my code.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the regression using the real_time_fir_iir_filters commit 687912d and nightly toolchain 3e674b06b. Start at compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:171, then follow the reported resolve_instance_raw and check_associated_item paths; done means the associated-const case no longer triggers this ICE.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.