Skip to content

ICE with -Znext-solver when accessing hir place #151579

@trait-Cong

Description

@trait-Cong

I tried this code: (auto-reduce)

#![deny(rust_2021_incompatible_closure_captures)]
struct SendPointer();
struct CustomInt(*mut i32);
struct SyncPointer(<SendPointer as NewTrait1>::Assoc);
impl Send for CustomInt {}
fn test_multi_traits_issues() {
    let fptr1 = SyncPointer();
    thread::spawn(move ||  {
            *fptr1.0.0 = 20;
        })
        .join()
        .unwrap();
}

trait NewTrait1 {
    type Assoc;
}
impl NewTrait1 for SendPointer {
    type Assoc = CustomInt;
}
fn main(){}

The compiler hangs even with -Z next-solver=globally

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 (39052daf9 2026-01-22)
binary: rustc
commit-hash: 39052daf937d46373ac29778e1b8853c52c0cc25
commit-date: 2026-01-22
host: x86_64-unknown-linux-gnu
release: 1.95.0-nightly
LLVM version: 21.1.8
Backtrace

thread 'rustc' panicked at /rustc-dev/39052daf937d46373ac29778e1b8853c52c0cc25/compiler/rustc_middle/src/ty/closure.rs:324:21:
Box<dyn Any>
stack backtrace:
   0:     0x7fdd2f1d863b - <std[34fb7373c7e72eb7]::backtrace::Backtrace>::create
   1:     0x7fdd2f1d8585 - <std[34fb7373c7e72eb7]::backtrace::Backtrace>::force_capture
   2:     0x7fdd2e1ec3e7 - std[34fb7373c7e72eb7]::panicking::update_hook::<alloc[bc4cb1e78b267867]::boxed::Box<rustc_driver_impl[4732efef1a955d17]::install_ice_hook::{closure#1}>>::{closure#0}
   3:     0x7fdd2f1eafc2 - std[34fb7373c7e72eb7]::panicking::panic_with_hook
   4:     0x7fdd2e220ff1 - std[34fb7373c7e72eb7]::panicking::begin_panic::<rustc_errors[8e75ca79703c1f3e]::ExplicitBug>::{closure#0}
   5:     0x7fdd2e219a66 - std[34fb7373c7e72eb7]::sys::backtrace::__rust_end_short_backtrace::<std[34fb7373c7e72eb7]::panicking::begin_panic<rustc_errors[8e75ca79703c1f3e]::ExplicitBug>::{closure#0}, !>
   6:     0x7fdd2e2177d9 - std[34fb7373c7e72eb7]::panicking::begin_panic::<rustc_errors[8e75ca79703c1f3e]::ExplicitBug>
   7:     0x7fdd2e22c1a1 - <rustc_errors[8e75ca79703c1f3e]::diagnostic::BugAbort as rustc_errors[8e75ca79703c1f3e]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   8:     0x7fdd2e7cd699 - rustc_middle[78d5c0086ff0cb14]::util::bug::opt_span_bug_fmt::<rustc_span[b65cb73ecde2ff03]::span_encoding::Span>::{closure#0}
   9:     0x7fdd2e7cd822 - rustc_middle[78d5c0086ff0cb14]::ty::context::tls::with_opt::<rustc_middle[78d5c0086ff0cb14]::util::bug::opt_span_bug_fmt<rustc_span[b65cb73ecde2ff03]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  10:     0x7fdd2e7bea6b - rustc_middle[78d5c0086ff0cb14]::ty::context::tls::with_context_opt::<rustc_middle[78d5c0086ff0cb14]::ty::context::tls::with_opt<rustc_middle[78d5c0086ff0cb14]::util::bug::opt_span_bug_fmt<rustc_span[b65cb73ecde2ff03]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  11:     0x7fdd2c52f084 - rustc_middle[78d5c0086ff0cb14]::util::bug::bug_fmt
  12:     0x7fdd3055fb91 - rustc_middle[78d5c0086ff0cb14]::ty::closure::place_to_string_for_capture
  13:     0x7fdd2e50ad42 - <rustc_hir_typeck[1a09b58f20181205]::fn_ctxt::FnCtxt>::perform_2229_migration_analysis
  14:     0x7fdd305ccf02 - <rustc_hir_typeck[1a09b58f20181205]::fn_ctxt::FnCtxt>::analyze_closure
  15:     0x7fdd2fab4f66 - <rustc_hir_typeck[1a09b58f20181205]::upvar::InferBorrowKindVisitor as rustc_hir[87f031771fbbadb6]::intravisit::Visitor>::visit_expr
  16:     0x7fdd2fab50e0 - <rustc_hir_typeck[1a09b58f20181205]::upvar::InferBorrowKindVisitor as rustc_hir[87f031771fbbadb6]::intravisit::Visitor>::visit_expr
  17:     0x7fdd2fab5113 - <rustc_hir_typeck[1a09b58f20181205]::upvar::InferBorrowKindVisitor as rustc_hir[87f031771fbbadb6]::intravisit::Visitor>::visit_expr
  18:     0x7fdd2fab5113 - <rustc_hir_typeck[1a09b58f20181205]::upvar::InferBorrowKindVisitor as rustc_hir[87f031771fbbadb6]::intravisit::Visitor>::visit_expr
  19:     0x7fdd2fab4db6 - <rustc_hir_typeck[1a09b58f20181205]::upvar::InferBorrowKindVisitor as rustc_hir[87f031771fbbadb6]::intravisit::Visitor>::visit_block
  20:     0x7fdd30581986 - rustc_hir_typeck[1a09b58f20181205]::typeck_with_inspect::{closure#0}
  21:     0x7fdd3057fcf0 - rustc_query_impl[a61ad378a11c2585]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[a61ad378a11c2585]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[78d5c0086ff0cb14]::query::erase::Erased<[u8; 8usize]>>
  22:     0x7fdd2faa7b2a - rustc_query_system[ef06f3046e437e5]::query::plumbing::try_execute_query::<rustc_query_impl[a61ad378a11c2585]::DynamicConfig<rustc_data_structures[173af339ef2774cb]::vec_cache::VecCache<rustc_span[b65cb73ecde2ff03]::def_id::LocalDefId, rustc_middle[78d5c0086ff0cb14]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[ef06f3046e437e5]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[a61ad378a11c2585]::plumbing::QueryCtxt, false>
  23:     0x7fdd2faa7409 - rustc_query_impl[a61ad378a11c2585]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  24:     0x7fdd3045c1ad - <rustc_middle[78d5c0086ff0cb14]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[fa2e1821763ac804]::check_crate::{closure#2}>::{closure#0}
  25:     0x7fdd3045bbe0 - rustc_hir_analysis[fa2e1821763ac804]::check_crate
  26:     0x7fdd2faa169b - rustc_interface[f6529d171d7be797]::passes::analysis
  27:     0x7fdd2faa12e7 - rustc_query_impl[a61ad378a11c2585]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[a61ad378a11c2585]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[78d5c0086ff0cb14]::query::erase::Erased<[u8; 0usize]>>
  28:     0x7fdd30a2c563 - rustc_query_system[ef06f3046e437e5]::query::plumbing::try_execute_query::<rustc_query_impl[a61ad378a11c2585]::DynamicConfig<rustc_query_system[ef06f3046e437e5]::query::caches::SingleCache<rustc_middle[78d5c0086ff0cb14]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[a61ad378a11c2585]::plumbing::QueryCtxt, false>
  29:     0x7fdd30a2c34e - rustc_query_impl[a61ad378a11c2585]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7fdd30b755d1 - <rustc_interface[f6529d171d7be797]::passes::create_and_enter_global_ctxt<core[9e7909da24ebc1bc]::option::Option<rustc_interface[f6529d171d7be797]::queries::Linker>, rustc_driver_impl[4732efef1a955d17]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[9e7909da24ebc1bc]::ops::function::FnOnce<(&rustc_session[551c966262bcd0c6]::session::Session, rustc_middle[78d5c0086ff0cb14]::ty::context::CurrentGcx, alloc[bc4cb1e78b267867]::sync::Arc<rustc_data_structures[173af339ef2774cb]::jobserver::Proxy>, &std[34fb7373c7e72eb7]::sync::once_lock::OnceLock<rustc_middle[78d5c0086ff0cb14]::ty::context::GlobalCtxt>, &rustc_data_structures[173af339ef2774cb]::sync::worker_local::WorkerLocal<rustc_middle[78d5c0086ff0cb14]::arena::Arena>, &rustc_data_structures[173af339ef2774cb]::sync::worker_local::WorkerLocal<rustc_hir[87f031771fbbadb6]::Arena>, rustc_driver_impl[4732efef1a955d17]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
  31:     0x7fdd309a3127 - rustc_interface[f6529d171d7be797]::interface::run_compiler::<(), rustc_driver_impl[4732efef1a955d17]::run_compiler::{closure#0}>::{closure#1}
  32:     0x7fdd309dd13e - std[34fb7373c7e72eb7]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f6529d171d7be797]::util::run_in_thread_with_globals<rustc_interface[f6529d171d7be797]::util::run_in_thread_pool_with_globals<rustc_interface[f6529d171d7be797]::interface::run_compiler<(), rustc_driver_impl[4732efef1a955d17]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  33:     0x7fdd309dd660 - <std[34fb7373c7e72eb7]::thread::lifecycle::spawn_unchecked<rustc_interface[f6529d171d7be797]::util::run_in_thread_with_globals<rustc_interface[f6529d171d7be797]::util::run_in_thread_pool_with_globals<rustc_interface[f6529d171d7be797]::interface::run_compiler<(), rustc_driver_impl[4732efef1a955d17]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[9e7909da24ebc1bc]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  34:     0x7fdd309de528 - <std[34fb7373c7e72eb7]::sys::thread::unix::Thread>::new::thread_start
  35:     0x7fdd2a294ac3 - start_thread
                               at ./nptl/pthread_create.c:442:8
  36:     0x7fdd2a3268c0 - __GI___clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81:0
  37:                0x0 - <unknown>


rustc version: 1.95.0-nightly (39052daf9 2026-01-22)
platform: x86_64-unknown-linux-gnu

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-closuresArea: Closures (`|…| { … }`)A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️L-rust_2021_incompatible_closure_capturesLint: rust_2021_incompatible_closure_capturesS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-typesRelevant to the types team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

    Type

    No type

    Projects

    Status

    in progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions