Skip to content

ICE:called Option::unwrap() on a None value #140469

Open
@sososopy

Description

@sososopy

Code

#![feature(async_drop)]
fn func<const N: usize>(x: [&[i32]; N]) {
    || {
        for i in x {
            yield();
        }
    };
}

Meta

rustc --version --verbose:

rustc 1.88.0-nightly (25cdf1f67 2025-04-28)
binary: rustc
commit-hash: 25cdf1f67463c9365d8d83778c933ec7480e940b
commit-date: 2025-04-28
host: x86_64-pc-windows-msvc
release: 1.88.0-nightly
LLVM version: 20.1.2

Error output

error[E0658]: yield syntax is experimental
   --> .\ttt\test.rs:265:13
    |
265 |             yield();
    |             ^^^^^^^
    |
    = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
    = help: add `#![feature(coroutines)]` to the crate attributes to enable
    = note: this compiler was built on 2025-04-28; consider upgrading it if it is out of date

warning: the feature `async_drop` is incomplete and may not be safe to use and/or cause compiler crashes
   --> .\ttt\test.rs:261:12
    |
261 | #![feature(async_drop)]
    |            ^^^^^^^^^^
    |
    = note: see issue #126482 <https://github.com/rust-lang/rust/issues/126482> for more information
    = note: `#[warn(incomplete_features)]` on by default

error[E0658]: yield syntax is experimental
   --> .\ttt\test.rs:265:13
    |
265 |             yield();
    |             ^^^^^^^
    |
    = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
    = help: add `#![feature(yield_expr)]` to the crate attributes to enable
    = note: this compiler was built on 2025-04-28; consider upgrading it if it is out of date

error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
   --> .\ttt\test.rs:265:13
    |
265 |             yield();
    |             ^^^^^^^
    |
help: use `#[coroutine]` to make this closure a coroutine
    |
263 |     #[coroutine] || {
    |     ++++++++++++

error[E0601]: `main` function not found in crate `test`
   --> .\ttt\test.rs:268:2
    |
268 | }
    |  ^ consider adding a `main` function to `.\ttt\test.rs`
Backtrace

thread 'rustc' panicked at compiler\rustc_middle\src\ty\sty.rs:364:36:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0:     0x7ffde70e7772 - std::backtrace_rs::backtrace::win64::trace
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
   1:     0x7ffde70e7772 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ffde70e7772 - std::sys::backtrace::_print_fmt
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\sys\backtrace.rs:66
   3:     0x7ffde70e7772 - std::sys::backtrace::impl$0::print::impl$0::fmt
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\sys\backtrace.rs:39
   4:     0x7ffde711a2bb - core::fmt::rt::Argument::fmt
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\core\src\fmt\rt.rs:179
   5:     0x7ffde711a2bb - core::fmt::write
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\core\src\fmt\mod.rs:1481
   6:     0x7ffde70dda27 - std::io::default_write_fmt
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\io\mod.rs:639
   7:     0x7ffde70dda27 - std::io::Write::write_fmt<std::sys::stdio::windows::Stderr>
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\io\mod.rs:1914
   8:     0x7ffde70e75b5 - std::sys::backtrace::BacktraceLock::print
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\sys\backtrace.rs:42
   9:     0x7ffde70ed25a - std::panicking::default_hook::closure$0
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\panicking.rs:300
  10:     0x7ffde70ecff0 - std::panicking::default_hook
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\panicking.rs:327
  11:     0x7ffde87e16f9 - core[78e2a688f80d3516]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[f9c30a40a5d8fca2]::Level, &str), usize), <((rustc_lint_defs[f9c30a40a5d8fca2]::Level, &str), usize) as core[78e2a688f80d3516]::cmp::PartialOrd>::lt>
  12:     0x7ffde70edeee - std::panicking::rust_panic_with_hook
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\panicking.rs:841
  13:     0x7ffde70edc12 - std::panicking::begin_panic_handler::closure$0
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\panicking.rs:699
  14:     0x7ffde70e852f - std::sys::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\sys\backtrace.rs:168
  15:     0x7ffde70ed84e - std::panicking::begin_panic_handler
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\panicking.rs:697
  16:     0x7ffdea228001 - core::panicking::panic_fmt
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\core\src\panicking.rs:75
  17:     0x7ffdea2280bd - core::panicking::panic
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\core\src\panicking.rs:145
  18:     0x7ffdea227f7e - core::option::unwrap_failed
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\core\src\option.rs:2040
  19:     0x7ffde6f79996 - <rustc_middle[223a725a3241bbc2]::ty::sty::ParamConst>::find_ty_from_env
  20:     0x7ffde81a1a30 - <rustc_trait_selection[e44406e7d0a46219]::traits::query::normalize::QueryNormalizer as rustc_type_ir[b1b4bfd106a80022]::fold::FallibleTypeFolder<rustc_middle[223a725a3241bbc2]::ty::context::TyCtxt>>::try_fold_ty
  21:     0x7ffde81a6197 - <rustc_trait_selection[e44406e7d0a46219]::traits::query::normalize::QueryNormalizer as rustc_type_ir[b1b4bfd106a80022]::fold::FallibleTypeFolder<rustc_middle[223a725a3241bbc2]::ty::context::TyCtxt>>::try_fold_ty
  22:     0x7ffde80dfc0c - <rustc_trait_selection[e44406e7d0a46219]::traits::select::SelectionContext>::evaluate_root_obligation
  23:     0x7ffde796331e - rustc_traits[d4be836249d80e20]::evaluate_obligation::evaluate_obligation
  24:     0x7ffde801cb8e - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  25:     0x7ffde7f15e58 - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCsffVmfNnCV1u_13rustc_type_ir9canonical19CanonicalQueryInputNtNtNtCs2WcbfYfVIWs_12rustc_middle2t
  26:     0x7ffde802f290 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  27:     0x7ffde814ab95 - <rustc_infer[451d1c64d0bb9a13]::infer::InferCtxt as rustc_trait_selection[e44406e7d0a46219]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
  28:     0x7ffde81005cc - rustc_trait_selection[e44406e7d0a46219]::traits::type_known_to_meet_bound_modulo_regions
  29:     0x7ffde7df6491 - rustc_ty_utils[45a1d957d15ee6cd]::common_traits::is_copy_raw
  30:     0x7ffde801bb04 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  31:     0x7ffde7efce96 - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs2WcbfYfVIWs_12rustc_middle2ty20PseudoCanonicalInputNtB2w_2TyEINtNtNtB2y_5query5erase6ErasedAhj
  32:     0x7ffde802b436 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  33:     0x7ffde863f45f - <rustc_middle[223a725a3241bbc2]::ty::context::TyCtxt>::type_is_copy_modulo_regions
  34:     0x7ffde96135af - rustc_ty_utils[45a1d957d15ee6cd]::needs_drop::needs_async_drop_raw
  35:     0x7ffde9860495 - <rustc_query_impl[6f45aaa328468e93]::plumbing::QueryCtxt as rustc_query_system[f6a4bac142582ec]::query::QueryContext>::depth_limit_error     
  36:     0x7ffde982cc63 - <rustc_query_system[f6a4bac142582ec]::query::plumbing::JobOwner<(), rustc_query_system[f6a4bac142582ec]::query::QueryStackDeferred> as core[78e2a688f80d3516]::ops::drop::Drop>::drop
  37:     0x7ffde7efd2ec - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs2WcbfYfVIWs_12rustc_middle2ty20PseudoCanonicalInputNtB2w_2TyEINtNtNtB2y_5query5erase6ErasedAhj
  38:     0x7ffde9886202 - <rustc_span[a6ac15f15f288c95]::def_id::DefIndex as rustc_query_impl[6f45aaa328468e93]::profiling_support::SpecIntoSelfProfilingString>::spec_to_self_profile_string
  39:     0x7ffde8ede2ab - <alloc[5ee769a2c16ffbe5]::collections::vec_deque::VecDeque<&mut rustc_mir_transform[df85c3740367f631]::coverage::mappings::MCDCBranch>>::grow  40:     0x7ffde7566766 - rustc_mir_transform[df85c3740367f631]::deduce_param_attrs::deduced_param_attrs
  41:     0x7ffde75630f3 - rustc_mir_transform[df85c3740367f631]::deduce_param_attrs::deduced_param_attrs
  42:     0x7ffde7564dd6 - rustc_mir_transform[df85c3740367f631]::deduce_param_attrs::deduced_param_attrs
  43:     0x7ffde69bdc57 - rustc_mir_transform[df85c3740367f631]::is_mir_available
  44:     0x7ffde69b554f - rustc_mir_transform[df85c3740367f631]::shim::make_shim
  45:     0x7ffde6c6e126 - <alloc[5ee769a2c16ffbe5]::sync::Arc<rustc_session[3b6e91cc442c9304]::config::OutputFilenames>>::drop_slow
  46:     0x7ffde6c53793 - <alloc[5ee769a2c16ffbe5]::sync::Arc<rustc_session[3b6e91cc442c9304]::config::OutputFilenames>>::drop_slow
  47:     0x7ffde6bbfc83 - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheNtNtNtCs2WcbfYfVIWs_12rustc_middle2ty8instance12InstanceKindINtNtNtB2z_5query5erase6ErasedAhj8_EEKb0_
  48:     0x7ffde6c82be2 - rustc_query_impl[6f45aaa328468e93]::query_system
  49:     0x7ffde9f85a8b - <rustc_middle[223a725a3241bbc2]::ty::context::TyCtxt>::coroutine_layout
  50:     0x7ffde7e2152f - rustc_ty_utils[45a1d957d15ee6cd]::layout::layout_of
  51:     0x7ffde801dd4e - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  52:     0x7ffde7ef7941 - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs2WcbfYfVIWs_12rustc_middle2ty20PseudoCanonicalInputNtB2w_2TyEINtNtNtB2y_5query5erase6ErasedAhj
  53:     0x7ffde802c21b - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  54:     0x7ffde7b99e1c - <rustc_mir_dataflow[afa65aad2ef5b93e]::value_analysis::Map>::new
  55:     0x7ffde8fb9b57 - <rustc_mir_transform[df85c3740367f631]::dataflow_const_prop::DataflowConstProp as rustc_mir_transform[df85c3740367f631]::pass_manager::MirPass>::run_pass
  56:     0x7ffde755fac7 - <rustc_mir_transform[df85c3740367f631]::simplify::SimplifyCfg as rustc_mir_transform[df85c3740367f631]::pass_manager::MirPass>::run_pass     
  57:     0x7ffde759163b - rustc_mir_transform[df85c3740367f631]::run_analysis_to_runtime_passes
  58:     0x7ffde7591eef - rustc_mir_transform[df85c3740367f631]::optimized_mir
  59:     0x7ffde801beb0 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  60:     0x7ffde7ee7a1b - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches10DefIdCacheINtNtNtCs2WcbfYfVIWs_12rustc_middle5query5erase6ErasedAhj8_EEKb0_KB3r_KB3r_ENtNtB1f_8plumbing9QueryCtxt
  61:     0x7ffde80223c4 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  62:     0x7ffde9f85eab - <rustc_middle[223a725a3241bbc2]::ty::context::TyCtxt>::coroutine_layout
  63:     0x7ffde7e2152f - rustc_ty_utils[45a1d957d15ee6cd]::layout::layout_of
  64:     0x7ffde801dd4e - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  65:     0x7ffde7ef7941 - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs2WcbfYfVIWs_12rustc_middle2ty20PseudoCanonicalInputNtB2w_2TyEINtNtNtB2y_5query5erase6ErasedAhj
  66:     0x7ffde802c21b - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  67:     0x7ffde75f0bea - <rustc_mir_transform[df85c3740367f631]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[df85c3740367f631]::pass_manager::MirLint>::run_lint
  68:     0x7ffde758cf5a - rustc_mir_transform[df85c3740367f631]::run_analysis_to_runtime_passes
  69:     0x7ffde7588d4a - rustc_mir_transform[df85c3740367f631]::mir_drops_elaborated_and_const_checked
  70:     0x7ffde801d85b - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  71:     0x7ffde7f5ccdb - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtCs7G8HGJy4UT9_21rustc_data_structures9vec_cache8VecCacheNtNtCsejbV3oEDgwb_10rustc_span6def_id10LocalDefIdINtNtNtCs2WcbfYfVIWs
  72:     0x7ffde80220c2 - rustc_query_impl[6f45aaa328468e93]::plumbing::query_key_hash_verify_all
  73:     0x7ffde7159f14 - rustc_interface[f74e78c6a24d3dfd]::passes::resolver_for_lowering_raw
  74:     0x7ffde3a643d7 - rustc_interface[f74e78c6a24d3dfd]::passes::analysis
  75:     0x7ffde6c6dcca - <alloc[5ee769a2c16ffbe5]::sync::Arc<rustc_session[3b6e91cc442c9304]::config::OutputFilenames>>::drop_slow
  76:     0x7ffde6b76e9e - RINvNtNtCs1k3oNJgFkWS_18rustc_query_system5query8plumbing17try_execute_queryINtCs9yixdmdYRUZ_16rustc_query_impl13DynamicConfigINtNtB4_6caches11SingleCacheINtNtNtCs2WcbfYfVIWs_12rustc_middle5query5erase6ErasedAhj0_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
  77:     0x7ffde6c73db3 - rustc_query_impl[6f45aaa328468e93]::query_system
  78:     0x7ffde3a1e02f - std[9e42655e6e0f329a]::sys::backtrace::__rust_begin_short_backtrace::<<std[9e42655e6e0f329a]::thread::Builder>::spawn_unchecked_<ctrlc[869e659078d012e0]::set_handler_inner<rustc_driver_impl[ece5ca0082575a16]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>   
  79:     0x7ffde3a17f88 - std[9e42655e6e0f329a]::sys::backtrace::__rust_begin_short_backtrace::<<std[9e42655e6e0f329a]::thread::Builder>::spawn_unchecked_<ctrlc[869e659078d012e0]::set_handler_inner<rustc_driver_impl[ece5ca0082575a16]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>   
  80:     0x7ffde3a13830 - RINvNtNtCsdAptkrAWEuA_3std3sys9backtrace28___rust_begin_short_backtraceNCNCINvNtCslepdXI2wPSX_15rustc_interface4util26run_in_thread_with_globalsNCINvB1e_31run_in_thread_pool_with_globalsNCINvNtB1g_9interface12run_compileruNCNvCskl01Gqil8UI_17rustc_driver_i
  81:     0x7ffde3a22380 - std[9e42655e6e0f329a]::sys::backtrace::__rust_begin_short_backtrace::<<std[9e42655e6e0f329a]::thread::Builder>::spawn_unchecked_<ctrlc[869e659078d012e0]::set_handler_inner<rustc_driver_impl[ece5ca0082575a16]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>   
  82:     0x7ffde70f225d - alloc::boxed::impl$28::call_once
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\alloc\src\boxed.rs:1966
  83:     0x7ffde70f225d - alloc::boxed::impl$28::call_once
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\alloc\src\boxed.rs:1966
  84:     0x7ffde70f225d - std::sys::pal::windows::thread::impl$0::new::thread_start
                               at /rustc/25cdf1f67463c9365d8d83778c933ec7480e940b/library\std\src\sys\pal\windows\thread.rs:56
  85:     0x7ffec0397374 - BaseThreadInitThunk
  86:     0x7ffec0c5cc91 - RtlUserThreadStart

error: the compiler unexpectedly panicked. this is a bug.

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: compiler flags: -Z mir-opt-level=3

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `[core::mem::maybe_uninit::MaybeUninit<&[i32]>; N]: core::marker::Copy`
#1 [is_copy_raw] computing whether `[core::mem::maybe_uninit::MaybeUninit<&[i32]>; N]` is `Copy`
... and 7 other queries... use `env RUST_BACKTRACE=1` to see the full query stack

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-async-awaitArea: Async & AwaitA-const-propArea: Constant propagationC-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.F-async_drop`#![feature(async_drop)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-bisectionStatus: a bisection has been found for this issueS-has-mcveStatus: 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.requires-incomplete-featuresThis issue requires the use of incomplete features.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions