ICE: `region parameter out of range when instantiating args` with -Z next-solver=globally and undeclared lifetime
Open
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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