-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Open
Labels
-Zvalidate-mirUnstable option: MIR validationUnstable option: MIR validationC-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) ❄️S-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-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
auto-reduced (treereduce-rust):
//@compile-flags: --edition=2024 -Zvalidate-mir
use ::core::pin::Pin;
trait Foo {
fn bar<'me, 'async_trait, T: Send>(x: &'me T) -> Pin<Box<dyn Future<Output = ()> + Send>>
where
'me: 'async_trait;
}
impl Foo for () {
fn bar<'me, 'async_trait, T: Send>(x: &'me T) -> Pin<Box<dyn Future<Output = ()> + Send>>
where
'me: 'async_trait,
{
Box::pin(async move {
let x = x;
})
}
}
fn main() {}
original:
//@ edition:2018
use ::core::pin::Pin;
use ::core::future::Future;
use ::core::marker::Send;
trait Foo {
fn bar<'me, 'async_trait, T: Send>(x: &'me T)
-> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'me: 'async_trait;
}
impl Foo for () {
fn bar<'me, 'async_trait, T: Send>(x: &'me T)
-> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'me:'async_trait {
Box::pin( //@ edition:2018
async move {
let x = x;
}
)
}
}
fn main() { }
Version information
rustc 1.91.0-nightly (71289c378 2025-09-04)
binary: rustc
commit-hash: 71289c378d0a406a4f537fe4001282d19362931f
commit-date: 2025-09-04
host: x86_64-unknown-linux-gnu
release: 1.91.0-nightly
LLVM version: 21.1.0
Possibly related line of code:
rust/compiler/rustc_mir_transform/src/validate.rs
Lines 74 to 86 in 71289c3
}; | |
cfg_checker.visit_body(body); | |
cfg_checker.check_cleanup_control_flow(); | |
// Also run the TypeChecker. | |
for (location, msg) in validate_types(tcx, typing_env, body, body) { | |
cfg_checker.fail(location, msg); | |
} | |
if let MirPhase::Runtime(_) = body.phase | |
&& let ty::InstanceKind::Item(_) = body.source.instance | |
&& body.has_free_regions() | |
{ |
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc --edition=2024 -Zvalidate-mir
Program output
warning: unused variable: `x`
--> /tmp/icemaker_global_tempdir.WalRtMxhm63X/rustc_testrunner_tmpdir_reporting.WqFA43bpg2gM/mvce.rs:15:17
|
15 | let x = x;
| ^ help: if this is intentional, prefix it with an underscore: `_x`
|
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
error: internal compiler error: compiler/rustc_mir_transform/src/validate.rs:80:25: broken MIR in Item(DefId(0:10 ~ mvce[5d7d]::{impl#0}::bar)) (after pass CheckForceInline) at bb1[0]:
Unsize coercion, but `std::pin::Pin<std::boxed::Box<{async block@/tmp/icemaker_global_tempdir.WalRtMxhm63X/rustc_testrunner_tmpdir_reporting.WqFA43bpg2gM/mvce.rs:14:18: 14:28}>>` isn't coercible to `std::pin::Pin<std::boxed::Box<dyn std::future::Future<Output = ()> + std::marker::Send>>`
--> /tmp/icemaker_global_tempdir.WalRtMxhm63X/rustc_testrunner_tmpdir_reporting.WqFA43bpg2gM/mvce.rs:14:9
|
14 | / Box::pin(async move {
15 | | let x = x;
16 | | })
| |__________^
thread 'rustc' (1981516) panicked at compiler/rustc_mir_transform/src/validate.rs:80:25:
Box<dyn Any>
stack backtrace:
0: 0x7f15a0c75fd2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h74535c69a9a8851c
1: 0x7f15a140c57c - core::fmt::write::h617ef057c538ffbe
2: 0x7f15a0c2a251 - std::io::Write::write_fmt::haeef701e34a0f1ce
3: 0x7f15a0c3b8d2 - std::sys::backtrace::BacktraceLock::print::hc779bb6277bee776
4: 0x7f15a0c41ba7 - std::panicking::default_hook::{{closure}}::h375a85ea81672879
5: 0x7f15a0c416b3 - std::panicking::default_hook::h6cf8c92021730d42
6: 0x7f159fc63691 - std[a85058167e77f399]::panicking::update_hook::<alloc[f3ac3bcb91ff4184]::boxed::Box<rustc_driver_impl[8ae33f5ddd6f22c2]::install_ice_hook::{closure#1}>>::{closure#0}
7: 0x7f15a0c420af - std::panicking::panic_with_hook::hb1f4786dce1429bc
8: 0x7f159fca0fe1 - std[a85058167e77f399]::panicking::begin_panic::<rustc_errors[55184e806260cfe4]::ExplicitBug>::{closure#0}
9: 0x7f159fc95326 - std[a85058167e77f399]::sys::backtrace::__rust_end_short_backtrace::<std[a85058167e77f399]::panicking::begin_panic<rustc_errors[55184e806260cfe4]::ExplicitBug>::{closure#0}, !>
10: 0x7f159fc9469e - std[a85058167e77f399]::panicking::begin_panic::<rustc_errors[55184e806260cfe4]::ExplicitBug>
11: 0x7f159fcacc01 - <rustc_errors[55184e806260cfe4]::diagnostic::BugAbort as rustc_errors[55184e806260cfe4]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
12: 0x7f15a022e5dc - <rustc_errors[55184e806260cfe4]::DiagCtxtHandle>::span_bug::<rustc_span[e82c85b666ab7901]::span_encoding::Span, alloc[f3ac3bcb91ff4184]::string::String>
13: 0x7f15a0255757 - rustc_middle[5ded7ef5e9c99589]::util::bug::opt_span_bug_fmt::<rustc_span[e82c85b666ab7901]::span_encoding::Span>::{closure#0}
14: 0x7f15a025594a - rustc_middle[5ded7ef5e9c99589]::ty::context::tls::with_opt::<rustc_middle[5ded7ef5e9c99589]::util::bug::opt_span_bug_fmt<rustc_span[e82c85b666ab7901]::span_encoding::Span>::{closure#0}, !>::{closure#0}
15: 0x7f15a024407b - rustc_middle[5ded7ef5e9c99589]::ty::context::tls::with_context_opt::<rustc_middle[5ded7ef5e9c99589]::ty::context::tls::with_opt<rustc_middle[5ded7ef5e9c99589]::util::bug::opt_span_bug_fmt<rustc_span[e82c85b666ab7901]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
16: 0x7f159e102f67 - rustc_middle[5ded7ef5e9c99589]::util::bug::span_bug_fmt::<rustc_span[e82c85b666ab7901]::span_encoding::Span>
17: 0x7f159ebfe16f - <rustc_mir_transform[f939db7989ace53a]::validate::CfgChecker>::fail::<alloc[f3ac3bcb91ff4184]::string::String>
18: 0x7f15a20fb526 - <rustc_mir_transform[f939db7989ace53a]::validate::Validator as rustc_mir_transform[f939db7989ace53a]::pass_manager::MirPass>::run_pass
19: 0x7f159ec2f095 - rustc_mir_transform[f939db7989ace53a]::pass_manager::validate_body
20: 0x7f15a1407136 - rustc_query_impl[9354df03bc15753a]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9354df03bc15753a]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 8usize]>>
21: 0x7f15a15f8f05 - rustc_query_system[58e4f3e481076de2]::query::plumbing::try_execute_query::<rustc_query_impl[9354df03bc15753a]::DynamicConfig<rustc_data_structures[59c3a3e48a0cb88]::vec_cache::VecCache<rustc_span[e82c85b666ab7901]::def_id::LocalDefId, rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[58e4f3e481076de2]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[9354df03bc15753a]::plumbing::QueryCtxt, false>
22: 0x7f15a15f8a09 - rustc_query_impl[9354df03bc15753a]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
23: 0x7f15a2030eda - rustc_mir_build[f65013b02413be2b]::check_unsafety::check_unsafety
24: 0x7f15a2030ae7 - rustc_query_impl[9354df03bc15753a]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9354df03bc15753a]::query_impl::check_unsafety::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 0usize]>>
25: 0x7f15a15f125b - rustc_query_system[58e4f3e481076de2]::query::plumbing::try_execute_query::<rustc_query_impl[9354df03bc15753a]::DynamicConfig<rustc_data_structures[59c3a3e48a0cb88]::vec_cache::VecCache<rustc_span[e82c85b666ab7901]::def_id::LocalDefId, rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 0usize]>, rustc_query_system[58e4f3e481076de2]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[9354df03bc15753a]::plumbing::QueryCtxt, false>
26: 0x7f15a15f0e8b - rustc_query_impl[9354df03bc15753a]::query_impl::check_unsafety::get_query_non_incr::__rust_end_short_backtrace
27: 0x7f15a15f0373 - <rustc_middle[5ded7ef5e9c99589]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface[b9c81810830046cc]::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
28: 0x7f15a15edcdb - rustc_interface[b9c81810830046cc]::passes::analysis
29: 0x7f15a15ed18d - rustc_query_impl[9354df03bc15753a]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9354df03bc15753a]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 0usize]>>
30: 0x7f15a24b9920 - rustc_query_system[58e4f3e481076de2]::query::plumbing::try_execute_query::<rustc_query_impl[9354df03bc15753a]::DynamicConfig<rustc_query_system[58e4f3e481076de2]::query::caches::SingleCache<rustc_middle[5ded7ef5e9c99589]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[9354df03bc15753a]::plumbing::QueryCtxt, false>
31: 0x7f15a24b9576 - rustc_query_impl[9354df03bc15753a]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
32: 0x7f15a27c1576 - rustc_interface[b9c81810830046cc]::passes::create_and_enter_global_ctxt::<core[388173e3ebade246]::option::Option<rustc_interface[b9c81810830046cc]::queries::Linker>, rustc_driver_impl[8ae33f5ddd6f22c2]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
33: 0x7f15a26a3f85 - rustc_interface[b9c81810830046cc]::interface::run_compiler::<(), rustc_driver_impl[8ae33f5ddd6f22c2]::run_compiler::{closure#0}>::{closure#1}
34: 0x7f15a259f403 - std[a85058167e77f399]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[b9c81810830046cc]::util::run_in_thread_with_globals<rustc_interface[b9c81810830046cc]::util::run_in_thread_pool_with_globals<rustc_interface[b9c81810830046cc]::interface::run_compiler<(), rustc_driver_impl[8ae33f5ddd6f22c2]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
35: 0x7f15a259f0c8 - <<std[a85058167e77f399]::thread::Builder>::spawn_unchecked_<rustc_interface[b9c81810830046cc]::util::run_in_thread_with_globals<rustc_interface[b9c81810830046cc]::util::run_in_thread_pool_with_globals<rustc_interface[b9c81810830046cc]::interface::run_compiler<(), rustc_driver_impl[8ae33f5ddd6f22c2]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[388173e3ebade246]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
36: 0x7f15a25a55ef - std::sys::pal::unix::thread::Thread::new::thread_start::hf0c6c3cf2c1ee824
37: 0x7f159bc969cb - <unknown>
38: 0x7f159bd1aa0c - <unknown>
39: 0x0 - <unknown>
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: please make sure that you have updated to the latest nightly
note: rustc 1.91.0-nightly (71289c378 2025-09-04) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z validate-mir -Z dump-mir-dir=dir
query stack during panic:
#0 [mir_built] building MIR for `<impl at /tmp/icemaker_global_tempdir.WalRtMxhm63X/rustc_testrunner_tmpdir_reporting.WqFA43bpg2gM/mvce.rs:9:1: 9:16>::bar`
#1 [check_unsafety] unsafety-checking `<impl at /tmp/icemaker_global_tempdir.WalRtMxhm63X/rustc_testrunner_tmpdir_reporting.WqFA43bpg2gM/mvce.rs:9:1: 9:16>::bar`
#2 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 1 previous error; 1 warning emitted
Metadata
Metadata
Assignees
Labels
-Zvalidate-mirUnstable option: MIR validationUnstable option: MIR validationC-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) ❄️S-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-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.