rust-lang / rust-lang/rust

ICE: `region parameter out of range when instantiating args` with -Z next-solver=globally and undeclared lifetime

Open
#151,964 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug I-ICE T-compiler WG-trait-system-refactor
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

I tried this code:
Reduction:

trait Foo<'a>:  {}
trait Bar {
    fn foo(&self) -> &  Foo<'a, Out = impl Sized + 'a>;
}
fn main() {
    let x: & Bar = &();
     _ = x.foo();
}

Release channel Result
Current Stable error
Current Nightly (default solver) error
Current Nightly (+ -Znext-solver=globally) ICE
Meta

rustc --version --verbose:

rustc 1.95.0-nightly (a293cc4af 2026-01-30)
binary: rustc
commit-hash: a293cc4af8b26701c42738381c0c6f9d2ba881e0
commit-date: 2026-01-30
host: x86_64-unknown-linux-gnu
release: 1.95.0-nightly
LLVM version: 22.1.0
Backtrace

thread 'rustc' panicked at /rustc-dev/a293cc4af8b26701c42738381c0c6f9d2ba881e0/compiler/rustc_type_ir/src/binder.rs:865:9:
region parameter `'_/#1` ('_/#1/1) out of range when instantiating args=[dyn [Binder { value: Trait(Bar), bound_vars: [] }] + '?0]
stack backtrace:
   0:     0x7f8b73425b2b - <std[b56300d62699629]::backtrace::Backtrace>::create
   1:     0x7f8b73425a75 - <std[b56300d62699629]::backtrace::Backtrace>::force_capture
   2:     0x7f8b7240e06a - std[b56300d62699629]::panicking::update_hook::<alloc[77e06c05b3e1163]::boxed::Box<rustc_driver_impl[306165e0f22ac3b8]::install_ice_hook::{closure#1}>>::{closure#0}
   3:     0x7f8b73438562 - std[b56300d62699629]::panicking::panic_with_hook
   4:     0x7f8b7341b028 - std[b56300d62699629]::panicking::panic_handler::{closure#0}
   5:     0x7f8b7340f599 - std[b56300d62699629]::sys::backtrace::__rust_end_short_backtrace::<std[b56300d62699629]::panicking::panic_handler::{closure#0}, !>
   6:     0x7f8b7341ca8d - __rustc[dff7bba7b93d99f5]::rust_begin_unwind
   7:     0x7f8b700c973c - core[1940e17cfe77f04e]::panicking::panic_fmt
   8:     0x7f8b72a1eb45 - <rustc_type_ir[d34b452a896e10b7]::binder::ArgFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::region_param_out_of_range
   9:     0x7f8b753b6e7b - <rustc_type_ir[d34b452a896e10b7]::binder::ArgFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt> as rustc_type_ir[d34b452a896e10b7]::fold::TypeFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::fold_region.cold
  10:     0x7f8b73cc1371 - <rustc_type_ir[d34b452a896e10b7]::binder::ArgFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt> as rustc_type_ir[d34b452a896e10b7]::fold::TypeFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::fold_ty
  11:     0x7f8b7522d21a - <rustc_middle[4fbddfd8361bbe31]::ty::predicate::Clause as rustc_type_ir[d34b452a896e10b7]::fold::TypeFoldable<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::fold_with::<rustc_type_ir[d34b452a896e10b7]::binder::ArgFolder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>.warm
  12:     0x7f8b750e18cd - <rustc_type_ir[d34b452a896e10b7]::binder::EarlyBinder<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt, rustc_middle[4fbddfd8361bbe31]::ty::predicate::Clause>>::instantiate::<&rustc_middle[4fbddfd8361bbe31]::ty::list::RawList<(), rustc_middle[4fbddfd8361bbe31]::ty::generic_args::GenericArg>>
  13:     0x7f8b74f25ce5 - rustc_next_trait_solver[9292fa706aa7673a]::solve::assembly::structural_traits::predicates_for_object_candidate::<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>
  14:     0x7f8b74f254b9 - <rustc_type_ir[d34b452a896e10b7]::predicate::TraitPredicate<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt> as rustc_next_trait_solver[9292fa706aa7673a]::solve::assembly::GoalKind<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::match_assumption::<<rustc_type_ir[d34b452a896e10b7]::predicate::TraitPredicate<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt> as rustc_next_trait_solver[9292fa706aa7673a]::solve::assembly::GoalKind<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::probe_and_consider_object_bound_candidate::{closure#0}>
  15:     0x7f8b74f27f3d - <rustc_type_ir[d34b452a896e10b7]::predicate::TraitPredicate<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt> as rustc_next_trait_solver[9292fa706aa7673a]::solve::assembly::GoalKind<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::probe_and_consider_object_bound_candidate
  16:     0x7f8b748c42ff - <rustc_next_trait_solver[9292fa706aa7673a]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::assemble_and_evaluate_candidates::<rustc_type_ir[d34b452a896e10b7]::predicate::TraitPredicate<rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>
  17:     0x7f8b748d6d29 - <rustc_next_trait_solver[9292fa706aa7673a]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::compute_trait_goal
  18:     0x7f8b748d2558 - <rustc_next_trait_solver[9292fa706aa7673a]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate> as rustc_type_ir[d34b452a896e10b7]::search_graph::Delegate>::compute_goal::{closure#0}
  19:     0x7f8b748d15cf - <rustc_type_ir[d34b452a896e10b7]::search_graph::SearchGraph<rustc_next_trait_solver[9292fa706aa7673a]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate>, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}
  20:     0x7f8b745978eb - <rustc_next_trait_solver[9292fa706aa7673a]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[c7f74c517c76c09d]::solve::delegate::SolverDelegate, rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>>::evaluate_goal_raw
  21:     0x7f8b74594269 - <rustc_trait_selection[c7f74c517c76c09d]::solve::fulfill::FulfillmentCtxt<rustc_trait_selection[c7f74c517c76c09d]::traits::FulfillmentError> as rustc_infer[a2c09121c28d14ae]::traits::engine::TraitEngine<rustc_trait_selection[c7f74c517c76c09d]::traits::FulfillmentError>>::try_evaluate_obligations
  22:     0x7f8b73ef0f25 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_method_call
  23:     0x7f8b73f25428 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  24:     0x7f8b73f06088 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_decl
  25:     0x7f8b73f2a36f - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_block
  26:     0x7f8b73f25444 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  27:     0x7f8b73f2a670 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_block
  28:     0x7f8b73f25444 - <rustc_hir_typeck[3e059607d3b59331]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  29:     0x7f8b73ede24a - rustc_hir_typeck[3e059607d3b59331]::check::check_fn
  30:     0x7f8b74771d52 - rustc_hir_typeck[3e059607d3b59331]::typeck_with_inspect::{closure#0}
  31:     0x7f8b74770706 - rustc_query_impl[de8dc5dcbfafa282]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[de8dc5dcbfafa282]::query_impl::typeck::make_query_vtable::{closure#1}::{closure#0}, rustc_middle[4fbddfd8361bbe31]::query::erase::ErasedData<[u8; 8usize]>>
  32:     0x7f8b73b358b2 - rustc_query_system[47e010d69cf1376c]::query::plumbing::try_execute_query::<rustc_query_impl[de8dc5dcbfafa282]::SemiDynamicQueryDispatcher<rustc_data_structures[66bcb0d8d60a0708]::vec_cache::VecCache<rustc_span[40d3100df278a6ee]::def_id::LocalDefId, rustc_middle[4fbddfd8361bbe31]::query::erase::ErasedData<[u8; 8usize]>, rustc_query_system[47e010d69cf1376c]::dep_graph::graph::DepNodeIndex>, false, false, false>, false>
  33:     0x7f8b73b35189 - rustc_query_impl[de8dc5dcbfafa282]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7f8b740405f1 - <rustc_middle[4fbddfd8361bbe31]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[281f645d6dd33d26]::check_crate::{closure#2}>::{closure#0}
  35:     0x7f8b74040004 - rustc_hir_analysis[281f645d6dd33d26]::check_crate
  36:     0x7f8b73b2e11b - rustc_interface[c33df4e5b4e639ae]::passes::analysis
  37:     0x7f8b73b2dd75 - rustc_query_impl[de8dc5dcbfafa282]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[de8dc5dcbfafa282]::query_impl::analysis::make_query_vtable::{closure#1}::{closure#0}, rustc_middle[4fbddfd8361bbe31]::query::erase::ErasedData<[u8; 0usize]>>
  38:     0x7f8b74b6dfe6 - rustc_query_system[47e010d69cf1376c]::query::plumbing::try_execute_query::<rustc_query_impl[de8dc5dcbfafa282]::SemiDynamicQueryDispatcher<rustc_query_system[47e010d69cf1376c]::query::caches::SingleCache<rustc_middle[4fbddfd8361bbe31]::query::erase::ErasedData<[u8; 0usize]>>, false, false, false>, false>
  39:     0x7f8b74b6ddce - rustc_query_impl[de8dc5dcbfafa282]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  40:     0x7f8b74d06b6c - <rustc_interface[c33df4e5b4e639ae]::passes::create_and_enter_global_ctxt<core[1940e17cfe77f04e]::option::Option<rustc_interface[c33df4e5b4e639ae]::queries::Linker>, rustc_driver_impl[306165e0f22ac3b8]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[1940e17cfe77f04e]::ops::function::FnOnce<(&rustc_session[1d337842f56cc0a6]::session::Session, rustc_middle[4fbddfd8361bbe31]::ty::context::CurrentGcx, alloc[77e06c05b3e1163]::sync::Arc<rustc_data_structures[66bcb0d8d60a0708]::jobserver::Proxy>, &std[b56300d62699629]::sync::once_lock::OnceLock<rustc_middle[4fbddfd8361bbe31]::ty::context::GlobalCtxt>, &rustc_data_structures[66bcb0d8d60a0708]::sync::worker_local::WorkerLocal<rustc_middle[4fbddfd8361bbe31]::arena::Arena>, &rustc_data_structures[66bcb0d8d60a0708]::sync::worker_local::WorkerLocal<rustc_hir[5322f89bbdf6d77c]::Arena>, rustc_driver_impl[306165e0f22ac3b8]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
  41:     0x7f8b74b95748 - rustc_interface[c33df4e5b4e639ae]::interface::run_compiler::<(), rustc_driver_impl[306165e0f22ac3b8]::run_compiler::{closure#0}>::{closure#1}
  42:     0x7f8b74bd25be - std[b56300d62699629]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[c33df4e5b4e639ae]::util::run_in_thread_with_globals<rustc_interface[c33df4e5b4e639ae]::util::run_in_thread_pool_with_globals<rustc_interface[c33df4e5b4e639ae]::interface::run_compiler<(), rustc_driver_impl[306165e0f22ac3b8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  43:     0x7f8b74bd2ae0 - <std[b56300d62699629]::thread::lifecycle::spawn_unchecked<rustc_interface[c33df4e5b4e639ae]::util::run_in_thread_with_globals<rustc_interface[c33df4e5b4e639ae]::util::run_in_thread_pool_with_globals<rustc_interface[c33df4e5b4e639ae]::interface::run_compiler<(), rustc_driver_impl[306165e0f22ac3b8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[1940e17cfe77f04e]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  44:     0x7f8b74bd396c - <std[b56300d62699629]::sys::thread::unix::Thread>::new::thread_start
  45:     0x7f8b6e494ac3 - start_thread
                               at ./nptl/pthread_create.c:442:8
  46:     0x7f8b6e5268c0 - __GI___clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81:0
  47:                0x0 - <unknown>


rustc version: 1.95.0-nightly (a293cc4af 2026-01-30)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [typeck] type-checking `main`
#1 [analysis] running analysis passes on crate `bug`
end of query stack

@rustbot label +WG-trait-system-refactor +I-ICE +T-compiler +C-bug

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 supplied Rust snippet with -Znext-solver=globally, then start at compiler/rustc_type_ir/src/binder.rs line 865 and follow the predicates_for_object_candidate entry in rustc_next_trait_solver. Done means the reproducer no longer triggers an ICE and still produces the expected diagnostic behavior seen on stable or with the default solver.

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
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.