-
-
Notifications
You must be signed in to change notification settings - Fork 14.5k
Open
Labels
A-closuresArea: Closures (`|…| { … }`)Area: Closures (`|…| { … }`)A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️L-rust_2021_incompatible_closure_capturesLint: rust_2021_incompatible_closure_capturesLint: rust_2021_incompatible_closure_capturesS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: 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.Relevant to the types team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)The Rustc Trait System Refactor Initiative (-Znext-solver)
Description
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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-closuresArea: Closures (`|…| { … }`)Area: Closures (`|…| { … }`)A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️L-rust_2021_incompatible_closure_capturesLint: rust_2021_incompatible_closure_capturesLint: rust_2021_incompatible_closure_capturesS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: 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.Relevant to the types team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)The Rustc Trait System Refactor Initiative (-Znext-solver)
Type
Projects
Status
in progress