Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE: Assignment between coroutine saved locals whose storage is not marked as conflicting #122630

Open
matthiaskrgr opened this issue Mar 17, 2024 · 1 comment
Labels
-Zvalidate-mir Unstable option: MIR validation C-bug Category: This is a bug. F-coroutines `#![feature(coroutines)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

matthiaskrgr commented Mar 17, 2024

auto-reduced (treereduce-rust):

use std::ops::Coroutine;

const FOO_SIZE: usize = 1024;
struct Foo([u8; FOO_SIZE]);

impl Drop for Foo {
    fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
}

fn overlap_move_points() -> impl Coroutine<Yield = ()> {
    static || {
        let first = Foo([0; FOO_SIZE]);
        yield;
        let second = first;
        yield;
        let second = first;
        yield;
    }
}

original (see tests/ui/coroutine/size-moved-locals.rs)

#![feature(coroutine_trait, coroutines)]

pub fn main() {}

use std::ops::Coroutine;

const FOO_SIZE: usize = 1024;
struct Foo([u8; FOO_SIZE]);

impl Drop for Foo {
    fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
}

fn overlap_move_points() -> impl Coroutine<Yield = ()> {
    static || {
        let first = Foo([0; FOO_SIZE]);
        yield;
        let second = first;
        yield;
        let second = first;
        yield;
    }
}

Version information

rustc 1.79.0-nightly (c8f0d492a 2024-03-17)
binary: rustc
commit-hash: c8f0d492a74efd98df11287108b7f68c76d937dc
commit-date: 2024-03-17
host: x86_64-unknown-linux-gnu
release: 1.79.0-nightly
LLVM version: 18.1.2

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zvalidate-mir

Program output

error[E0407]: method `move_before_yield_with_noop` is not a member of trait `Drop`
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:7:5
  |
7 |     fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a member of trait `Drop`

error[E0658]: yield syntax is experimental
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:13:9
   |
13 |         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 2024-03-17; consider upgrading it if it is out of date

error[E0658]: yield syntax is experimental
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:15:9
   |
15 |         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 2024-03-17; consider upgrading it if it is out of date

error[E0658]: yield syntax is experimental
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:17:9
   |
17 |         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 2024-03-17; consider upgrading it if it is out of date

error[E0601]: `main` function not found in crate `mvce`
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:19:2
   |
19 | }
   |  ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs`

error[E0658]: use of unstable library feature 'coroutine_trait'
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:1:5
  |
1 | use std::ops::Coroutine;
  |     ^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
  = help: add `#![feature(coroutine_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2024-03-17; consider upgrading it if it is out of date

error[E0658]: use of unstable library feature 'coroutine_trait'
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:7:46
  |
7 |     fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
  |                                              ^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
  = help: add `#![feature(coroutine_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2024-03-17; consider upgrading it if it is out of date

error[E0658]: use of unstable library feature 'coroutine_trait'
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:10:34
   |
10 | fn overlap_move_points() -> impl Coroutine<Yield = ()> {
   |                                  ^^^^^^^^^^^^^^^^^^^^^
   |
   = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
   = help: add `#![feature(coroutine_trait)]` to the crate attributes to enable
   = note: this compiler was built on 2024-03-17; consider upgrading it if it is out of date

error[E0046]: not all trait items implemented, missing: `drop`
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:6:1
  |
6 | impl Drop for Foo {
  | ^^^^^^^^^^^^^^^^^ missing `drop` in implementation
  |
  = help: implement the missing item: `fn drop(&mut self) { todo!() }`

error[E0658]: use of unstable library feature 'coroutine_trait'
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:7:56
  |
7 |     fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
  |                                                        ^^^^^^^^^^
  |
  = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
  = help: add `#![feature(coroutine_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2024-03-17; consider upgrading it if it is out of date

error[E0277]: the trait bound `(): Coroutine` is not satisfied
 --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:7:41
  |
7 |     fn move_before_yield_with_noop() -> impl Coroutine<Yield = ()> {}
  |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Coroutine` is not implemented for `()`

error[E0658]: use of unstable library feature 'coroutine_trait'
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:10:44
   |
10 | fn overlap_move_points() -> impl Coroutine<Yield = ()> {
   |                                            ^^^^^^^^^^
   |
   = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
   = help: add `#![feature(coroutine_trait)]` to the crate attributes to enable
   = note: this compiler was built on 2024-03-17; consider upgrading it if it is out of date

warning: unused variable: `second`
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:14:13
   |
14 |         let second = first;
   |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_second`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `second`
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:16:13
   |
16 |         let second = first;
   |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_second`

error[E0382]: use of moved value: `first`
  --> /tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:16:22
   |
12 |         let first = Foo([0; FOO_SIZE]);
   |             ----- move occurs because `first` has type `Foo`, which does not implement the `Copy` trait
13 |         yield;
14 |         let second = first;
   |                      ----- value moved here
15 |         yield;
16 |         let second = first;
   |                      ^^^^^ value used here after move

error: internal compiler error: compiler/rustc_mir_transform/src/coroutine.rs:1825:13: Assignment between coroutine saved locals whose storage is not marked as conflicting: bb2[4]: _2 = _0

thread 'rustc' panicked at compiler/rustc_middle/src/util/bug.rs:35:44:
Box<dyn Any>
stack backtrace:
   0:     0x7fb780534912 - std::backtrace_rs::backtrace::libunwind::trace::he7db98f6664d534e
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x7fb780534912 - std::backtrace_rs::backtrace::trace_unsynchronized::h619c799dac771297
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fb780534912 - std::sys_common::backtrace::_print_fmt::he4f2d5cb37d77d8f
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7fb780534912 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h2c2ff61be7201933
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7fb780585c8c - core::fmt::rt::Argument::fmt::h08ef8c695a5992ff
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/core/src/fmt/rt.rs:142:9
   5:     0x7fb780585c8c - core::fmt::write::h7c1c187a97c999e0
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/core/src/fmt/mod.rs:1153:17
   6:     0x7fb78052989f - std::io::Write::write_fmt::hea47b9313bd71e62
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/io/mod.rs:1843:15
   7:     0x7fb7805346e4 - std::sys_common::backtrace::_print::h400ae2b937a18bdb
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7fb7805346e4 - std::sys_common::backtrace::print::h264d27d32710ab48
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7fb7805373eb - std::panicking::default_hook::{{closure}}::h3a6f7d4be3f0d4ca
  10:     0x7fb780537143 - std::panicking::default_hook::h84a595b2334c3cc8
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/panicking.rs:292:9
  11:     0x7fb77d1b093f - std[e817162b9b7eabe3]::panicking::update_hook::<alloc[97325586b22163c9]::boxed::Box<rustc_driver_impl[f94f754ac739cd9d]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7fb780537b50 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h32a9cc8388c47bb8
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/alloc/src/boxed.rs:2034:9
  13:     0x7fb780537b50 - std::panicking::rust_panic_with_hook::h1a2656a46ca887e3
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/panicking.rs:783:13
  14:     0x7fb77d1dce04 - std[e817162b9b7eabe3]::panicking::begin_panic::<rustc_errors[3c206f64218413ce]::ExplicitBug>::{closure#0}
  15:     0x7fb77d1d9a56 - std[e817162b9b7eabe3]::sys_common::backtrace::__rust_end_short_backtrace::<std[e817162b9b7eabe3]::panicking::begin_panic<rustc_errors[3c206f64218413ce]::ExplicitBug>::{closure#0}, !>
  16:     0x7fb77d1d4f36 - std[e817162b9b7eabe3]::panicking::begin_panic::<rustc_errors[3c206f64218413ce]::ExplicitBug>
  17:     0x7fb77d1e6281 - <rustc_errors[3c206f64218413ce]::diagnostic::BugAbort as rustc_errors[3c206f64218413ce]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  18:     0x7fb77d66a581 - rustc_middle[32fa053442ffa68c]::util::bug::opt_span_bug_fmt::<rustc_span[619430a38b92b4db]::span_encoding::Span>::{closure#0}
  19:     0x7fb77d64e2ea - rustc_middle[32fa053442ffa68c]::ty::context::tls::with_opt::<rustc_middle[32fa053442ffa68c]::util::bug::opt_span_bug_fmt<rustc_span[619430a38b92b4db]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  20:     0x7fb77d64e168 - rustc_middle[32fa053442ffa68c]::ty::context::tls::with_context_opt::<rustc_middle[32fa053442ffa68c]::ty::context::tls::with_opt<rustc_middle[32fa053442ffa68c]::util::bug::opt_span_bug_fmt<rustc_span[619430a38b92b4db]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  21:     0x7fb77b4504c0 - rustc_middle[32fa053442ffa68c]::util::bug::bug_fmt
  22:     0x7fb77d7d1db5 - <rustc_mir_transform[e8e47afb4bc4cd5b]::coroutine::EnsureCoroutineFieldAssignmentsNeverAlias as rustc_middle[32fa053442ffa68c]::mir::visit::Visitor>::visit_place
  23:     0x7fb77d7d1f2f - <rustc_mir_transform[e8e47afb4bc4cd5b]::coroutine::EnsureCoroutineFieldAssignmentsNeverAlias as rustc_middle[32fa053442ffa68c]::mir::visit::Visitor>::visit_statement
  24:     0x7fb77d7cdee3 - <rustc_mir_transform[e8e47afb4bc4cd5b]::coroutine::StateTransform as rustc_middle[32fa053442ffa68c]::mir::MirPass>::run_pass
  25:     0x7fb77e40198d - rustc_mir_transform[e8e47afb4bc4cd5b]::pass_manager::run_passes_inner
  26:     0x7fb77eae438b - rustc_mir_transform[e8e47afb4bc4cd5b]::mir_drops_elaborated_and_const_checked
  27:     0x7fb77eae3ca3 - rustc_query_impl[1f3654d87d6d05d9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1f3654d87d6d05d9]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>
  28:     0x7fb77e77d92e - rustc_query_system[f505054c8bedd3ad]::query::plumbing::try_execute_query::<rustc_query_impl[1f3654d87d6d05d9]::DynamicConfig<rustc_query_system[f505054c8bedd3ad]::query::caches::VecCache<rustc_span[619430a38b92b4db]::def_id::LocalDefId, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[1f3654d87d6d05d9]::plumbing::QueryCtxt, false>
  29:     0x7fb77e77d20c - rustc_query_impl[1f3654d87d6d05d9]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7fb77eadfb69 - rustc_mir_transform[e8e47afb4bc4cd5b]::optimized_mir
  31:     0x7fb77eade25f - rustc_query_impl[1f3654d87d6d05d9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1f3654d87d6d05d9]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>
  32:     0x7fb77e4ef35c - rustc_query_system[f505054c8bedd3ad]::query::plumbing::try_execute_query::<rustc_query_impl[1f3654d87d6d05d9]::DynamicConfig<rustc_query_system[f505054c8bedd3ad]::query::caches::DefIdCache<rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[1f3654d87d6d05d9]::plumbing::QueryCtxt, false>
  33:     0x7fb77e4eea9e - rustc_query_impl[1f3654d87d6d05d9]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7fb77ecd3123 - rustc_middle[32fa053442ffa68c]::query::plumbing::query_get_at::<rustc_query_system[f505054c8bedd3ad]::query::caches::DefIdCache<rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>>
  35:     0x7fb77d66a349 - <rustc_middle[32fa053442ffa68c]::ty::context::TyCtxt>::coroutine_layout
  36:     0x7fb77e756c07 - rustc_ty_utils[5f6aabd18d7b4781]::layout::layout_of_uncached
  37:     0x7fb77e749208 - rustc_ty_utils[5f6aabd18d7b4781]::layout::layout_of
  38:     0x7fb77e749191 - rustc_query_impl[1f3654d87d6d05d9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1f3654d87d6d05d9]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 16usize]>>
  39:     0x7fb77e748490 - rustc_query_system[f505054c8bedd3ad]::query::plumbing::try_execute_query::<rustc_query_impl[1f3654d87d6d05d9]::DynamicConfig<rustc_query_system[f505054c8bedd3ad]::query::caches::DefaultCache<rustc_middle[32fa053442ffa68c]::ty::ParamEnvAnd<rustc_middle[32fa053442ffa68c]::ty::Ty>, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[1f3654d87d6d05d9]::plumbing::QueryCtxt, false>
  40:     0x7fb77e74812e - rustc_query_impl[1f3654d87d6d05d9]::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
  41:     0x7fb77bfd4d95 - <rustc_mir_transform[e8e47afb4bc4cd5b]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[e8e47afb4bc4cd5b]::pass_manager::MirLint>::run_lint
  42:     0x7fb77e40198d - rustc_mir_transform[e8e47afb4bc4cd5b]::pass_manager::run_passes_inner
  43:     0x7fb77eae438b - rustc_mir_transform[e8e47afb4bc4cd5b]::mir_drops_elaborated_and_const_checked
  44:     0x7fb77eae3ca3 - rustc_query_impl[1f3654d87d6d05d9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1f3654d87d6d05d9]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>
  45:     0x7fb77e77d92e - rustc_query_system[f505054c8bedd3ad]::query::plumbing::try_execute_query::<rustc_query_impl[1f3654d87d6d05d9]::DynamicConfig<rustc_query_system[f505054c8bedd3ad]::query::caches::VecCache<rustc_span[619430a38b92b4db]::def_id::LocalDefId, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[1f3654d87d6d05d9]::plumbing::QueryCtxt, false>
  46:     0x7fb77e77d20c - rustc_query_impl[1f3654d87d6d05d9]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
  47:     0x7fb77e8a4428 - rustc_interface[1d0052bc11394ad8]::passes::analysis
  48:     0x7fb77e8a3219 - rustc_query_impl[1f3654d87d6d05d9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1f3654d87d6d05d9]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 1usize]>>
  49:     0x7fb77f2411c3 - rustc_query_system[f505054c8bedd3ad]::query::plumbing::try_execute_query::<rustc_query_impl[1f3654d87d6d05d9]::DynamicConfig<rustc_query_system[f505054c8bedd3ad]::query::caches::SingleCache<rustc_middle[32fa053442ffa68c]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[1f3654d87d6d05d9]::plumbing::QueryCtxt, false>
  50:     0x7fb77f240f3f - rustc_query_impl[1f3654d87d6d05d9]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  51:     0x7fb77f068fc4 - rustc_interface[1d0052bc11394ad8]::interface::run_compiler::<core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>, rustc_driver_impl[f94f754ac739cd9d]::run_compiler::{closure#0}>::{closure#0}
  52:     0x7fb77f152485 - std[e817162b9b7eabe3]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[1d0052bc11394ad8]::util::run_in_thread_with_globals<rustc_interface[1d0052bc11394ad8]::util::run_in_thread_pool_with_globals<rustc_interface[1d0052bc11394ad8]::interface::run_compiler<core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>, rustc_driver_impl[f94f754ac739cd9d]::run_compiler::{closure#0}>::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>
  53:     0x7fb77f1522b2 - <<std[e817162b9b7eabe3]::thread::Builder>::spawn_unchecked_<rustc_interface[1d0052bc11394ad8]::util::run_in_thread_with_globals<rustc_interface[1d0052bc11394ad8]::util::run_in_thread_pool_with_globals<rustc_interface[1d0052bc11394ad8]::interface::run_compiler<core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>, rustc_driver_impl[f94f754ac739cd9d]::run_compiler::{closure#0}>::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ef30672e8fe2272c]::result::Result<(), rustc_span[619430a38b92b4db]::ErrorGuaranteed>>::{closure#1} as core[ef30672e8fe2272c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  54:     0x7fb7805411e5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8054d6ddbe496d18
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/alloc/src/boxed.rs:2020:9
  55:     0x7fb7805411e5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h941a950e2e2d287c
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/alloc/src/boxed.rs:2020:9
  56:     0x7fb7805411e5 - std::sys::pal::unix::thread::Thread::new::thread_start::h76c5a09297c3569a
                               at /rustc/c8f0d492a74efd98df11287108b7f68c76d937dc/library/std/src/sys/pal/unix/thread.rs:108:17
  57:     0x7fb77a07355a - <unknown>
  58:     0x7fb77a0f0a3c - <unknown>
  59:                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: rustc 1.79.0-nightly (c8f0d492a 2024-03-17) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z validate-mir -Z dump-mir-dir=dir

query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `overlap_move_points::{closure#0}`
#1 [optimized_mir] optimizing MIR for `overlap_move_points::{closure#0}`
#2 [layout_of] computing layout of `{static coroutine@/tmp/icemaker_global_tempdir.YUTxYOeQ15lg/rustc_testrunner_tmpdir_reporting.QEi8pf8YMhz1/mvce.rs:11:5: 11:14}`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `overlap_move_points`
#4 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 14 previous errors; 2 warnings emitted

Some errors have detailed explanations: E0046, E0277, E0382, E0407, E0601, E0658.
For more information about an error, try `rustc --explain E0046`.

@matthiaskrgr matthiaskrgr added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. F-coroutines `#![feature(coroutines)]` labels Mar 17, 2024
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 17, 2024
@matthiaskrgr
Copy link
Member Author

#120550 cc @oli-obk

@jieyouxu jieyouxu added S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Mar 17, 2024
@matthiaskrgr matthiaskrgr added the S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. label Apr 19, 2024
@fmease fmease added -Zvalidate-mir Unstable option: MIR validation labels May 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-Zvalidate-mir Unstable option: MIR validation C-bug Category: This is a bug. F-coroutines `#![feature(coroutines)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
Status: Todo
Development

No branches or pull requests

4 participants