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 with GAT, TAIT + async{} when missing bound in the GAT. #90400

Closed
Dirbaio opened this issue Oct 29, 2021 · 9 comments
Closed

ICE with GAT, TAIT + async{} when missing bound in the GAT. #90400

Dirbaio opened this issue Oct 29, 2021 · 9 comments
Labels
A-GATs Area: Generic associated types (GATs) C-bug Category: This is a bug. E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs F-type_alias_impl_trait `#[feature(type_alias_impl_trait)]` GATs-triaged Issues using the `generic_associated_types` feature that have been triaged 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.

Comments

@Dirbaio
Copy link
Contributor

Dirbaio commented Oct 29, 2021

Code

I think the cause is the code is incorrect: FooFuture should require where B: Bar. It doesn't, somehow the compiler doesn't catch this, and then ICEs at codegen if you try to use FooFuture<u32> because u32 is not Bar.

#![feature(generic_associated_types)]
#![feature(type_alias_impl_trait)]

use futures::executor::block_on;
use std::future::Future;

trait Bar {
    fn bar(&self);
}

trait Foo {
    type FooFuture<'a, B>: Future<Output = ()> + 'a
    where
        B: 'a,
        Self: 'a;

    fn foo<'a, B: Bar>(&'a self, bar: &'a B) -> Self::FooFuture<'_, B>;
}

struct MyFoo;

impl Foo for MyFoo {
    type FooFuture<'a, B>
    where
        B: 'a,
        Self: 'a,
    = impl Future<Output = ()> + 'a;

    fn foo<'a, B: Bar>(&'a self, bar: &'a B) -> Self::FooFuture<'_, B> {
        async move {
            bar.bar();
        }
    }
}

fn main() {
    let boom: <MyFoo as Foo>::FooFuture<'static, u32> = unsafe { core::mem::zeroed() };
    block_on(boom);
}

playground

Meta

rustc --version --verbose:

version: 1.58.0-nightly (2021-10-28 c390d69a615f095208ac)

Error output

error: internal compiler error: Encountered error `Unimplemented` selecting `Binder(<u32 as Bar>, [])` during codegen
Backtrace

   Compiling playground v0.0.1 (/playground)
thread 'rustc' panicked at 'called `Result::unwrap()` on an `Err` value: ErrorReported', compiler/rustc_monomorphize/src/collector.rs:894:84
stack backtrace:
   0: rust_begin_unwind
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:495:5
   1: core::panicking::panic_fmt
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/panicking.rs:106:14
   2: core::result::unwrap_failed
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/result.rs:1617:5
   3: rustc_monomorphize::collector::collect_neighbours
   4: rustc_monomorphize::collector::collect_items_rec
   5: rustc_monomorphize::collector::collect_items_rec
   6: rustc_monomorphize::collector::collect_items_rec
   7: rustc_monomorphize::collector::collect_items_rec
   8: rustc_monomorphize::collector::collect_items_rec
   9: rustc_monomorphize::collector::collect_items_rec
  10: rustc_monomorphize::collector::collect_items_rec
  11: rustc_monomorphize::collector::collect_items_rec
  12: rustc_monomorphize::collector::collect_items_rec
  13: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
  14: rustc_monomorphize::collector::collect_crate_mono_items
  15: rustc_monomorphize::partitioning::collect_and_partition_mono_items
  16: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), (&std::collections::hash::set::HashSet<rustc_span::def_id::DefId, core::hash::BuildHasherDefault<rustc_hash::FxHasher>>, &[rustc_middle::mir::mono::CodegenUnit])>>
  17: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::collect_and_partition_mono_items, rustc_query_impl::plumbing::QueryCtxt>
  18: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::collect_and_partition_mono_items
  19: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  20: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  21: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
  22: <rustc_interface::passes::QueryContext>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_errors::ErrorReported>>
  23: <rustc_interface::queries::Queries>::ongoing_codegen
  24: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>>
  25: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}>
  26: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: 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: rustc 1.58.0-nightly (c390d69a6 2021-10-28) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: internal compiler error: Encountered error `Unimplemented` selecting `Binder(<u32 as Bar>, [])` during codegen
  |
  = note: delayed at compiler/rustc_trait_selection/src/traits/codegen.rs:68:32

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', compiler/rustc_errors/src/lib.rs:1167:13
stack backtrace:
   0:     0x7f74068e076c - std::backtrace_rs::backtrace::libunwind::trace::hc6c3491277866fea
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f74068e076c - std::backtrace_rs::backtrace::trace_unsynchronized::h4524f073368a5b13
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f74068e076c - std::sys_common::backtrace::_print_fmt::h0d0cace6159902af
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x7f74068e076c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3e6af6f05919a7fc
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x7f740693d9ac - core::fmt::write::h72801a82c94e6ff1
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/fmt/mod.rs:1149:17
   5:     0x7f74068d0e95 - std::io::Write::write_fmt::ha4f5d34aaccbac84
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/io/mod.rs:1696:15
   6:     0x7f74068e39c0 - std::sys_common::backtrace::_print::heed69f5ce9a8e189
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x7f74068e39c0 - std::sys_common::backtrace::print::h5f3918bd80c09252
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x7f74068e39c0 - std::panicking::default_hook::{{closure}}::h5af30648530eb3d0
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:210:50
   9:     0x7f74068e356b - std::panicking::default_hook::he88d5fb1ba1b4c19
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:227:9
  10:     0x7f7407077e31 - rustc_driver[98914a17e63058c]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7f74068e41d9 - std::panicking::rust_panic_with_hook::h01febc308b2b313b
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:607:17
  12:     0x7f74068e3c90 - std::panicking::begin_panic_handler::{{closure}}::h24a6d13f5560b71f
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:499:13
  13:     0x7f74068e0c14 - std::sys_common::backtrace::__rust_end_short_backtrace::h3e2917f0da9fbc5c
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:139:18
  14:     0x7f74068e3bf9 - rust_begin_unwind
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:495:5
  15:     0x7f74068a9151 - core::panicking::panic_fmt::h7b8580d81fcbbacd
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/panicking.rs:106:14
  16:     0x7f7408182bac - core[cc79c391059f8e46]::panicking::panic_display::<&str>
  17:     0x7f7409866666 - <rustc_errors[932abaefb61eb634]::HandlerInner>::flush_delayed
  18:     0x7f7409864d7d - <rustc_errors[932abaefb61eb634]::HandlerInner as core[cc79c391059f8e46]::ops::drop::Drop>::drop
  19:     0x7f7408f4a346 - core[cc79c391059f8e46]::ptr::drop_in_place::<rustc_session[3b6910ad19e800a6]::parse::ParseSess>
  20:     0x7f7408f4ca3a - <alloc[9a4bc13598ff604f]::rc::Rc<rustc_session[3b6910ad19e800a6]::session::Session> as core[cc79c391059f8e46]::ops::drop::Drop>::drop
  21:     0x7f7408f2786d - core[cc79c391059f8e46]::ptr::drop_in_place::<rustc_interface[71a95cb40f833645]::interface::Compiler>
  22:     0x7f7408f276e5 - rustc_span[b6a32fa5db97fd22]::with_source_map::<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_interface[71a95cb40f833645]::interface::create_compiler_and_run<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}>
  23:     0x7f7408f379c0 - <scoped_tls[3fea4c3dcac147b1]::ScopedKey<rustc_span[b6a32fa5db97fd22]::SessionGlobals>>::set::<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>
  24:     0x7f7408f29a15 - std[fcea40badc263c8f]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>
  25:     0x7f7408f4c0a2 - <<std[fcea40badc263c8f]::thread::Builder>::spawn_unchecked<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#1} as core[cc79c391059f8e46]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  26:     0x7f74068ef4c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hd81bd86213781012
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/alloc/src/boxed.rs:1691:9
  27:     0x7f74068ef4c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7b3e346f5d8f6d6a
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/alloc/src/boxed.rs:1691:9
  28:     0x7f74068ef4c3 - std::sys::unix::thread::Thread::new::thread_start::ha575792f17151d60
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys/unix/thread.rs:106:17
  29:     0x7f7406828609 - start_thread
  30:     0x7f740673c293 - clone
  31:                0x0 - <unknown>

error: internal compiler error: unexpected panic

note: 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: rustc 1.58.0-nightly (c390d69a6 2021-10-28) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
thread panicked while panicking. aborting.
error: could not compile `playground`

Caused by:
  process didn't exit successfully: `rustc --crate-name playground --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 -C metadata=b6855da70d22b117 -C extra-filename=-b6855da70d22b117 --out-dir /playground/target/debug/deps -L dependency=/playground/target/debug/deps --extern addr2line=/playground/target/debug/deps/libaddr2line-57dca319da409415.rlib --extern adler=/playground/target/debug/deps/libadler-ef7aea1c0a632ed5.rlib --extern adler32=/playground/target/debug/deps/libadler32-88b3d863e553f12a.rlib --extern ahash=/playground/target/debug/deps/libahash-3d30edb2f197bcc1.rlib --extern aho_corasick=/playground/target/debug/deps/libaho_corasick-6e6a6f34e39b3c51.rlib --extern ansi_term_0_11_0=/playground/target/debug/deps/libansi_term-f3162ca25925bbbc.rlib --extern ansi_term=/playground/target/debug/deps/libansi_term-2159b79c7c03c33b.rlib --extern anyhow=/playground/target/debug/deps/libanyhow-f163091ebea0bf6d.rlib --extern approx=/playground/target/debug/deps/libapprox-c000d63eea2962d7.rlib --extern arc_swap=/playground/target/debug/deps/libarc_swap-229c7223f9d117b5.rlib --extern arrayvec=/playground/target/debug/deps/libarrayvec-efd360c13d73e262.rlib --extern async_recursion=/playground/target/debug/deps/libasync_recursion-00c978b50853a1e6.so --extern async_trait=/playground/target/debug/deps/libasync_trait-efd1289ac06d9076.so --extern atty=/playground/target/debug/deps/libatty-f17150d767aa2aa3.rlib --extern autocfg=/playground/target/debug/deps/libautocfg-0fedd4b00cd8cfde.rlib --extern backtrace=/playground/target/debug/deps/libbacktrace-39b779627d7b6438.rlib --extern base64=/playground/target/debug/deps/libbase64-cfc95277467b3864.rlib --extern bit_set=/playground/target/debug/deps/libbit_set-3053369e5ab97a8d.rlib --extern bit_vec=/playground/target/debug/deps/libbit_vec-968c38f13f141e15.rlib --extern bitflags=/playground/target/debug/deps/libbitflags-de1f0b76046eea2a.rlib --extern block_buffer=/playground/target/debug/deps/libblock_buffer-846877a87c354fcf.rlib --extern bstr=/playground/target/debug/deps/libbstr-d6a5d9e9d210f367.rlib --extern bytemuck=/playground/target/debug/deps/libbytemuck-efd95db5ac0c94fd.rlib --extern byteorder=/playground/target/debug/deps/libbyteorder-36a6ae6c88126558.rlib --extern bytes=/playground/target/debug/deps/libbytes-6e05598c71bf2ce4.rlib --extern cc=/playground/target/debug/deps/libcc-d71044b8c9288a53.rlib --extern cfg_if_0_1_10=/playground/target/debug/deps/libcfg_if-8c3e31f5e1f73766.rlib --extern cfg_if=/playground/target/debug/deps/libcfg_if-5253e57569830399.rlib --extern chrono=/playground/target/debug/deps/libchrono-f7beda6352973108.rlib --extern clap=/playground/target/debug/deps/libclap-ca1dcbdf619d94f9.rlib --extern color_quant=/playground/target/debug/deps/libcolor_quant-aef1b2deff556d9b.rlib --extern cpufeatures=/playground/target/debug/deps/libcpufeatures-6819da34f82599f6.rlib --extern crc32fast=/playground/target/debug/deps/libcrc32fast-a9e117ef1f3013c4.rlib --extern crossbeam=/playground/target/debug/deps/libcrossbeam-46c056cf0c60e108.rlib --extern crossbeam_channel=/playground/target/debug/deps/libcrossbeam_channel-c9d352209ac8f9a7.rlib --extern crossbeam_deque=/playground/target/debug/deps/libcrossbeam_deque-28980e36bf93e302.rlib --extern crossbeam_epoch=/playground/target/debug/deps/libcrossbeam_epoch-5721f18695321e48.rlib --extern crossbeam_queue=/playground/target/debug/deps/libcrossbeam_queue-507eb457b9dce41a.rlib --extern crossbeam_utils=/playground/target/debug/deps/libcrossbeam_utils-0fcce16cf5c127a8.rlib --extern crypto_mac=/playground/target/debug/deps/libcrypto_mac-5fa871b1336b0ab5.rlib --extern csv=/playground/target/debug/deps/libcsv-6b47927e27964282.rlib --extern csv_core=/playground/target/debug/deps/libcsv_core-acfd2e4320e1929d.rlib --extern data_encoding=/playground/target/debug/deps/libdata_encoding-dc27914ccac23bde.rlib --extern deflate=/playground/target/debug/deps/libdeflate-c4cf0a1da32bbdfe.rlib --extern derivative=/playground/target/debug/deps/libderivative-2e4a3a7ebdaef485.so --extern digest=/playground/target/debug/deps/libdigest-52d8152835333097.rlib --extern dtoa=/playground/target/debug/deps/libdtoa-14adace6fe09bde6.rlib --extern either=/playground/target/debug/deps/libeither-9385b7aa28821a65.rlib --extern encoding_rs=/playground/target/debug/deps/libencoding_rs-1ec3e0f519f06d46.rlib --extern env_logger=/playground/target/debug/deps/libenv_logger-5eb2bc05984648ac.rlib --extern error_chain=/playground/target/debug/deps/liberror_chain-d5348c8e93d94eb5.rlib --extern fallible_iterator=/playground/target/debug/deps/libfallible_iterator-7f4fc8c0ad37dc9d.rlib --extern fallible_streaming_iterator=/playground/target/debug/deps/libfallible_streaming_iterator-baab7654e5e34d04.rlib --extern filetime=/playground/target/debug/deps/libfiletime-e74097b8ded3015e.rlib --extern fixedbitset=/playground/target/debug/deps/libfixedbitset-370e556d0894ebec.rlib --extern flate2=/playground/target/debug/deps/libflate2-cd0a98b8cae9d5a3.rlib --extern fnv=/playground/target/debug/deps/libfnv-0672b6da71ed834c.rlib --extern foreign_types=/playground/target/debug/deps/libforeign_types-e5d0ea207091f2ed.rlib --extern foreign_types_shared=/playground/target/debug/deps/libforeign_types_shared-e64cfaf7a202bcc7.rlib --extern form_urlencoded=/playground/target/debug/deps/libform_urlencoded-12649d381e2544ae.rlib --extern futf=/playground/target/debug/deps/libfutf-fd020dc4260f6dbc.rlib --extern futures=/playground/target/debug/deps/libfutures-95b115ebfc2f44e6.rlib --extern futures_channel=/playground/target/debug/deps/libfutures_channel-702a6f6976e9bcc0.rlib --extern futures_core=/playground/target/debug/deps/libfutures_core-75d7e22a3d1bb5e7.rlib --extern futures_executor=/playground/target/debug/deps/libfutures_executor-a7e5613311bed589.rlib --extern futures_io=/playground/target/debug/deps/libfutures_io-41cc2bb9ae5cef13.rlib --extern futures_macro=/playground/target/debug/deps/libfutures_macro-da5e9c66d0267bc0.so --extern futures_sink=/playground/target/debug/deps/libfutures_sink-6fb5decbb6946791.rlib --extern futures_task=/playground/target/debug/deps/libfutures_task-e5e4f8997fb01360.rlib --extern futures_util=/playground/target/debug/deps/libfutures_util-48f9072bdaa2408b.rlib --extern generic_array=/playground/target/debug/deps/libgeneric_array-62c7ba7923e0a29a.rlib --extern getrandom_0_1_16=/playground/target/debug/deps/libgetrandom-49270c78695591dc.rlib --extern getrandom=/playground/target/debug/deps/libgetrandom-162a0e4ad1faad1b.rlib --extern gif=/playground/target/debug/deps/libgif-12adc352504923ea.rlib --extern gimli=/playground/target/debug/deps/libgimli-5e4889693117544d.rlib --extern glob=/playground/target/debug/deps/libglob-3e188ae16859c506.rlib --extern h2=/playground/target/debug/deps/libh2-9c23b442ae761b5d.rlib --extern hashbrown=/playground/target/debug/deps/libhashbrown-b840595832d08a4e.rlib --extern hashlink=/playground/target/debug/deps/libhashlink-6d0e166c1a160dfb.rlib --extern hmac=/playground/target/debug/deps/libhmac-a8383305c7adb521.rlib --extern html5ever=/playground/target/debug/deps/libhtml5ever-716742fc75966143.rlib --extern http=/playground/target/debug/deps/libhttp-c8338e8f6e3f91cd.rlib --extern http_body=/playground/target/debug/deps/libhttp_body-60f2bdc933a1ba56.rlib --extern httparse=/playground/target/debug/deps/libhttparse-0343d302852bfd5e.rlib --extern httpdate=/playground/target/debug/deps/libhttpdate-6e276491cfbce091.rlib --extern humantime=/playground/target/debug/deps/libhumantime-bcb137373d337ec0.rlib --extern hyper=/playground/target/debug/deps/libhyper-07fabfdce552b153.rlib --extern hyper_tls=/playground/target/debug/deps/libhyper_tls-9debb15f13111139.rlib --extern idna=/playground/target/debug/deps/libidna-6e145051664b89cb.rlib --extern image=/playground/target/debug/deps/libimage-58f67b9b3e2c05f2.rlib --extern indexmap=/playground/target/debug/deps/libindexmap-5310563f7f6850ad.rlib --extern instant=/playground/target/debug/deps/libinstant-d90784ddfa07f1be.rlib --extern ipnet=/playground/target/debug/deps/libipnet-a2c6ce50b20fb70a.rlib --extern itertools=/playground/target/debug/deps/libitertools-bba2509b5d58e709.rlib --extern itoa=/playground/target/debug/deps/libitoa-bda856047fedd8f8.rlib --extern jpeg_decoder=/playground/target/debug/deps/libjpeg_decoder-db3167418b097b80.rlib --extern lazy_static=/playground/target/debug/deps/liblazy_static-56f839fc5f97cc86.rlib --extern libc=/playground/target/debug/deps/liblibc-d1d27f50857f1efa.rlib --extern libm=/playground/target/debug/deps/liblibm-d2c691ad80c63701.rlib --extern libsqlite3_sys=/playground/target/debug/deps/liblibsqlite3_sys-4cb47f89541895ad.rlib --extern linked_hash_map=/playground/target/debug/deps/liblinked_hash_map-f70128bcbd8de949.rlib --extern lock_api=/playground/target/debug/deps/liblock_api-255f2e32c833e7b4.rlib --extern log=/playground/target/debug/deps/liblog-3ea39f4e757cabdd.rlib --extern log_mdc=/playground/target/debug/deps/liblog_mdc-8c9acbf18051a6d8.rlib --extern log4rs=/playground/target/debug/deps/liblog4rs-7b7e3c939fcb83c8.rlib --extern mac=/playground/target/debug/deps/libmac-5ef46c35d1d60ae2.rlib --extern markup5ever=/playground/target/debug/deps/libmarkup5ever-f059e29d19a45779.rlib --extern markup5ever_rcdom=/playground/target/debug/deps/libmarkup5ever_rcdom-3c9b9ab254c8da1e.rlib --extern matches=/playground/target/debug/deps/libmatches-94fda48e5e4c1005.rlib --extern matrixmultiply=/playground/target/debug/deps/libmatrixmultiply-09291edd90c62dcf.rlib --extern md5=/playground/target/debug/deps/libmd5-c0aa51ce3101e278.rlib --extern memchr=/playground/target/debug/deps/libmemchr-f98afaac2b23200a.rlib --extern memmap=/playground/target/debug/deps/libmemmap-e6ea97f9d601ac71.rlib --extern memoffset=/playground/target/debug/deps/libmemoffset-60b4e53329a7a062.rlib --extern mime=/playground/target/debug/deps/libmime-be254843d53468a4.rlib --extern miniz_oxide_0_3_7=/playground/target/debug/deps/libminiz_oxide-3f0683298da28c4f.rlib --extern miniz_oxide=/playground/target/debug/deps/libminiz_oxide-81cef754e657418c.rlib --extern mio=/playground/target/debug/deps/libmio-57e52853790d364f.rlib --extern nalgebra=/playground/target/debug/deps/libnalgebra-d996ac283f68fb15.rlib --extern nalgebra_macros=/playground/target/debug/deps/libnalgebra_macros-412fb6199d6d15be.so --extern native_tls=/playground/target/debug/deps/libnative_tls-57fa1970daee9ada.rlib --extern ndarray=/playground/target/debug/deps/libndarray-1817433ddc21dccd.rlib --extern net2=/playground/target/debug/deps/libnet2-242099c78779cedc.rlib --extern debug_unreachable=/playground/target/debug/deps/libdebug_unreachable-cc7ea61f7b47b527.rlib --extern num=/playground/target/debug/deps/libnum-e15216aa8c9b7a81.rlib --extern num_bigint=/playground/target/debug/deps/libnum_bigint-b1fbca71da84cedc.rlib --extern num_complex=/playground/target/debug/deps/libnum_complex-5fda52ec23effa72.rlib --extern num_integer=/playground/target/debug/deps/libnum_integer-4fb07cf55679ae1c.rlib --extern num_iter=/playground/target/debug/deps/libnum_iter-30366f5bac5e9769.rlib --extern num_rational_0_3_2=/playground/target/debug/deps/libnum_rational-c5dbd12d7e084141.rlib --extern num_rational=/playground/target/debug/deps/libnum_rational-42eec01ba9e9a890.rlib --extern num_traits=/playground/target/debug/deps/libnum_traits-ef4eda907710cc53.rlib --extern num_cpus=/playground/target/debug/deps/libnum_cpus-aaac07d3b3fbc1e9.rlib --extern object=/playground/target/debug/deps/libobject-1c94ea32452080f1.rlib --extern once_cell=/playground/target/debug/deps/libonce_cell-4f625b5ea98dbe62.rlib --extern opaque_debug=/playground/target/debug/deps/libopaque_debug-ab9ddb0f69438328.rlib --extern openssl=/playground/target/debug/deps/libopenssl-2936af1860edd592.rlib --extern openssl_probe=/playground/target/debug/deps/libopenssl_probe-5bd5ed1fcf2f67f6.rlib --extern openssl_sys=/playground/target/debug/deps/libopenssl_sys-053fdf4fdd54be98.rlib --extern ordered_float=/playground/target/debug/deps/libordered_float-77d258dd8200b47b.rlib --extern parking_lot=/playground/target/debug/deps/libparking_lot-d8aa2f0ac4a3842a.rlib --extern parking_lot_core=/playground/target/debug/deps/libparking_lot_core-b1f2997fb6a89672.rlib --extern paste=/playground/target/debug/deps/libpaste-1d007800db85bb25.so --extern percent_encoding=/playground/target/debug/deps/libpercent_encoding-431c76c01be24719.rlib --extern pest=/playground/target/debug/deps/libpest-5b994c69f9e934e9.rlib --extern petgraph=/playground/target/debug/deps/libpetgraph-03bd9eee7d11521a.rlib --extern phf=/playground/target/debug/deps/libphf-9bf22a8a90b775a9.rlib --extern phf_codegen=/playground/target/debug/deps/libphf_codegen-4b45c34c58e52089.rlib --extern phf_generator=/playground/target/debug/deps/libphf_generator-3deeacda3e113d65.rlib --extern phf_shared=/playground/target/debug/deps/libphf_shared-6ba73acfa4648529.rlib --extern pin_project=/playground/target/debug/deps/libpin_project-ee5eaf075fa30ab4.rlib --extern pin_project_internal=/playground/target/debug/deps/libpin_project_internal-6f99149f74dc8ec6.so --extern pin_project_lite=/playground/target/debug/deps/libpin_project_lite-507f0ddc461ac52a.rlib --extern pin_utils=/playground/target/debug/deps/libpin_utils-b0bf3f0688139ba1.rlib --extern pkg_config=/playground/target/debug/deps/libpkg_config-b9f036c91b0208e1.rlib --extern png=/playground/target/debug/deps/libpng-64f9599129298a59.rlib --extern postgres=/playground/target/debug/deps/libpostgres-38a9f11ce1d1df52.rlib --extern postgres_protocol=/playground/target/debug/deps/libpostgres_protocol-d749f7b21bb9e752.rlib --extern postgres_types=/playground/target/debug/deps/libpostgres_types-842540de150c21ef.rlib --extern ppv_lite86=/playground/target/debug/deps/libppv_lite86-b67f90ab267192fa.rlib --extern precomputed_hash=/playground/target/debug/deps/libprecomputed_hash-1298520f088678de.rlib --extern proc_macro_hack=/playground/target/debug/deps/libproc_macro_hack-91e0b1e0fa231bd6.so --extern proc_macro_nested=/playground/target/debug/deps/libproc_macro_nested-9a323edbb9ceaf9f.rlib --extern proc_macro2=/playground/target/debug/deps/libproc_macro2-80d66eaf413cd876.rlib --extern quick_error=/playground/target/debug/deps/libquick_error-65732850c28200f7.rlib --extern quote=/playground/target/debug/deps/libquote-3a7cff164be059f6.rlib --extern rand_0_7_3=/playground/target/debug/deps/librand-6949f331e9893845.rlib --extern rand=/playground/target/debug/deps/librand-0d4b189e2adce2c4.rlib --extern rand_chacha_0_2_2=/playground/target/debug/deps/librand_chacha-8ad52d5c6e548dc3.rlib --extern rand_chacha=/playground/target/debug/deps/librand_chacha-a4745d17f9d6b003.rlib --extern rand_core_0_5_1=/playground/target/debug/deps/librand_core-33a9f1b6b12702f1.rlib --extern rand_core=/playground/target/debug/deps/librand_core-c3d55faba6c71991.rlib --extern rand_distr=/playground/target/debug/deps/librand_distr-bd5826dc2e592b8a.rlib --extern rand_hc=/playground/target/debug/deps/librand_hc-c6e70507d41d212a.rlib --extern rand_pcg=/playground/target/debug/deps/librand_pcg-020af5cf5ddca123.rlib --extern rawpointer=/playground/target/debug/deps/librawpointer-63eb1bba55566369.rlib --extern rayon=/playground/target/debug/deps/librayon-6f1c65b5778248ee.rlib --extern rayon_core=/playground/target/debug/deps/librayon_core-6f91bbcee2a454eb.rlib --extern regex=/playground/target/debug/deps/libregex-e7f680424f0e5892.rlib --extern regex_automata=/playground/target/debug/deps/libregex_automata-6c0118ae8f4b0501.rlib --extern regex_syntax=/playground/target/debug/deps/libregex_syntax-bf3087c853715238.rlib --extern remove_dir_all=/playground/target/debug/deps/libremove_dir_all-6db8331ec1c4e72f.rlib --extern reqwest=/playground/target/debug/deps/libreqwest-3583b1cb6e80e0be.rlib --extern ring=/playground/target/debug/deps/libring-9243fda75334b245.rlib --extern rusqlite=/playground/target/debug/deps/librusqlite-604a3d73261a9a52.rlib --extern rustc_demangle=/playground/target/debug/deps/librustc_demangle-57fef8ec284fa01a.rlib --extern rustc_version=/playground/target/debug/deps/librustc_version-7ff528eab49435cb.rlib --extern ryu=/playground/target/debug/deps/libryu-bdb837b197ad7926.rlib --extern safe_arch=/playground/target/debug/deps/libsafe_arch-f3da7a44a0c398d1.rlib --extern same_file=/playground/target/debug/deps/libsame_file-7a3f353776f43cdd.rlib --extern scoped_threadpool=/playground/target/debug/deps/libscoped_threadpool-14c0b9d1ec39c6a3.rlib --extern scopeguard=/playground/target/debug/deps/libscopeguard-866386222a022128.rlib --extern select=/playground/target/debug/deps/libselect-de69bf2acb45db77.rlib --extern semver=/playground/target/debug/deps/libsemver-cdd44e1024de9a25.rlib --extern semver_parser=/playground/target/debug/deps/libsemver_parser-fa22a77381d4b647.rlib --extern serde=/playground/target/debug/deps/libserde-bf0c271f1c26f688.rlib --extern serde_value=/playground/target/debug/deps/libserde_value-50ca64038b6d607c.rlib --extern serde_derive=/playground/target/debug/deps/libserde_derive-ac0d65ece1f3bf91.so --extern serde_json=/playground/target/debug/deps/libserde_json-3e8036ba26686e80.rlib --extern serde_urlencoded=/playground/target/debug/deps/libserde_urlencoded-2c1fd409f0296601.rlib --extern serde_yaml=/playground/target/debug/deps/libserde_yaml-e22425e8650351ee.rlib --extern sha2=/playground/target/debug/deps/libsha2-6422266105f55615.rlib --extern simba=/playground/target/debug/deps/libsimba-dd2eb3b8adb7e823.rlib --extern siphasher=/playground/target/debug/deps/libsiphasher-b6df8905083949f8.rlib --extern slab=/playground/target/debug/deps/libslab-a613e78273e2994c.rlib --extern smallvec=/playground/target/debug/deps/libsmallvec-babc01fe749f5dc1.rlib --extern smawk=/playground/target/debug/deps/libsmawk-6ed7cfb7fa793e0c.rlib --extern socket2=/playground/target/debug/deps/libsocket2-a623f7013fd42b7c.rlib --extern spin=/playground/target/debug/deps/libspin-4d2c7b2ce1e7d317.rlib --extern string_cache=/playground/target/debug/deps/libstring_cache-967cc4709c36c415.rlib --extern string_cache_codegen=/playground/target/debug/deps/libstring_cache_codegen-1929c6bb3a71a3e2.rlib --extern stringprep=/playground/target/debug/deps/libstringprep-a2cd177617066afe.rlib --extern strsim_0_8_0=/playground/target/debug/deps/libstrsim-de24b5a82a358084.rlib --extern strsim=/playground/target/debug/deps/libstrsim-f8a23f77c73daaa0.rlib --extern subtle=/playground/target/debug/deps/libsubtle-e4d742d62e753012.rlib --extern syn=/playground/target/debug/deps/libsyn-171c29c041c8ddff.rlib --extern tar=/playground/target/debug/deps/libtar-00272b183f869d57.rlib --extern tempfile=/playground/target/debug/deps/libtempfile-0a37bd82d6cd9d9b.rlib --extern tendril=/playground/target/debug/deps/libtendril-0f1e7e0ad92436f6.rlib --extern termcolor=/playground/target/debug/deps/libtermcolor-ac34df5ab449410c.rlib --extern textwrap_0_11_0=/playground/target/debug/deps/libtextwrap-a1244e561e912773.rlib --extern textwrap=/playground/target/debug/deps/libtextwrap-3fe247f3ade8a176.rlib --extern thiserror=/playground/target/debug/deps/libthiserror-4df27ea74a4c44cb.rlib --extern thiserror_impl=/playground/target/debug/deps/libthiserror_impl-17323ab4fbb03087.so --extern thread_id=/playground/target/debug/deps/libthread_id-5af57dee44a9e5b5.rlib --extern thread_local=/playground/target/debug/deps/libthread_local-ff6c52c3d6835455.rlib --extern threadpool=/playground/target/debug/deps/libthreadpool-4f79d8209f0a1deb.rlib --extern tiff=/playground/target/debug/deps/libtiff-1502d689e2206828.rlib --extern time_0_1_44=/playground/target/debug/deps/libtime-58c8b2f7324be800.rlib --extern time=/playground/target/debug/deps/libtime-1a06cb39e8a413f4.rlib --extern tinyvec=/playground/target/debug/deps/libtinyvec-41ae46c02ad7d836.rlib --extern tinyvec_macros=/playground/target/debug/deps/libtinyvec_macros-8f36f65da14d810a.rlib --extern tokio=/playground/target/debug/deps/libtokio-c2dc62c50952c91b.rlib --extern tokio_native_tls=/playground/target/debug/deps/libtokio_native_tls-914e02f50a83d882.rlib --extern tokio_postgres=/playground/target/debug/deps/libtokio_postgres-9b8fe8eb4c7e0fbb.rlib --extern tokio_util=/playground/target/debug/deps/libtokio_util-2ef05af878ffc864.rlib --extern toml=/playground/target/debug/deps/libtoml-022f9a9d5d3b5d1e.rlib --extern tower_service=/playground/target/debug/deps/libtower_service-c041688e0e20bd6a.rlib --extern tracing=/playground/target/debug/deps/libtracing-a413000bee2602be.rlib --extern tracing_core=/playground/target/debug/deps/libtracing_core-02da3ee34dc0460e.rlib --extern traitobject=/playground/target/debug/deps/libtraitobject-ac408b27f7e01f65.rlib --extern try_lock=/playground/target/debug/deps/libtry_lock-849bac2fba98b76b.rlib --extern typemap=/playground/target/debug/deps/libtypemap-0e4274a17e401313.rlib --extern typenum=/playground/target/debug/deps/libtypenum-ac7db95e6f79cdd3.rlib --extern ucd_trie=/playground/target/debug/deps/libucd_trie-93387f8d9b9d3865.rlib --extern unicase=/playground/target/debug/deps/libunicase-5f5e7ca06c6ec24d.rlib --extern unicode_bidi=/playground/target/debug/deps/libunicode_bidi-6b3996bc223fd7fa.rlib --extern unicode_linebreak=/playground/target/debug/deps/libunicode_linebreak-fd5a1dd624037406.rlib --extern unicode_normalization=/playground/target/debug/deps/libunicode_normalization-6682d8efcc006850.rlib --extern unicode_segmentation=/playground/target/debug/deps/libunicode_segmentation-84fad06bf49b6f83.rlib --extern unicode_width=/playground/target/debug/deps/libunicode_width-89b03b59aa6daeee.rlib --extern unicode_xid=/playground/target/debug/deps/libunicode_xid-e62049c489d25ae7.rlib --extern unsafe_any=/playground/target/debug/deps/libunsafe_any-843b450d6d60d480.rlib --extern untrusted=/playground/target/debug/deps/libuntrusted-ecc06c34234b2716.rlib --extern url=/playground/target/debug/deps/liburl-4d1789bc1b432d93.rlib --extern utf8=/playground/target/debug/deps/libutf8-8dc7fb5a31151cba.rlib --extern vec_map=/playground/target/debug/deps/libvec_map-d4f07e9e0554b315.rlib --extern version_check=/playground/target/debug/deps/libversion_check-0914641c3c545b20.rlib --extern walkdir=/playground/target/debug/deps/libwalkdir-5f8042bccd6ce967.rlib --extern want=/playground/target/debug/deps/libwant-c87cf57b9785a1a3.rlib --extern weezl=/playground/target/debug/deps/libweezl-d16c0a64cf685d9c.rlib --extern wide=/playground/target/debug/deps/libwide-19b532deb18b9409.rlib --extern winapi=/playground/target/debug/deps/libwinapi-816acb549345e22d.rlib --extern xattr=/playground/target/debug/deps/libxattr-95408f9a26b8f42a.rlib --extern xml5ever=/playground/target/debug/deps/libxml5ever-3d48d435b90efb74.rlib --extern yaml_rust=/playground/target/debug/deps/libyaml_rust-4b0c1291d8cc95ca.rlib -L native=/playground/target/debug/build/libsqlite3-sys-cfd0717c619c8d26/out -L native=/playground/target/debug/build/ring-63ec69c22291d426/out` (signal: 4, SIGILL: illegal instruction)

@Dirbaio Dirbaio added C-bug Category: This is a bug. 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. labels Oct 29, 2021
@jackh726
Copy link
Member

Interesting.

So, the problem here is that the type of FooFuture has some bounds that are required for that type to be constructed (namely B: Bar), but we end up "getting" a variable with that type without satisfying that. Here through zeroed, but can also be done through a function with a todo!() body.

@jackh726 jackh726 added F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs F-type_alias_impl_trait `#[feature(type_alias_impl_trait)]` labels Oct 29, 2021
@SNCPlay42
Copy link
Contributor

SNCPlay42 commented Oct 29, 2021

Update: the below examples are no longer ICEs.

Some "reductions" that should have the same root cause as described above, although they error slightly differently (they all produce some kind of complaint that u32 is not Bar):

Using closures instead of async:

#![feature(generic_associated_types)]
#![feature(type_alias_impl_trait)]

trait Bar {
    fn bar(&self);
}

trait Foo {
    type FooFn<B>: FnOnce();
    
    fn foo<B: Bar>(&self, bar: B) -> Self::FooFn<B>;
}

struct MyFoo;

impl Foo for MyFoo {
    type FooFn<B> = impl FnOnce();
    
    fn foo<B: Bar>(&self, bar: B) -> Self::FooFn<B> {
        move || { bar.bar() }
    }
}

fn main() {
    let boom: <MyFoo as Foo>::FooFn<u32> = unsafe { core::mem::zeroed() };
    boom();
}
Output
thread 'rustc' panicked at 'called `Result::unwrap()` on an `Err` value: ErrorReported', compiler/rustc_monomorphize/src/collector.rs:894:84
stack backtrace:
   0: rust_begin_unwind
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:495:5
   1: core::panicking::panic_fmt
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/panicking.rs:106:14
   2: core::result::unwrap_failed
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/result.rs:1617:5
   3: rustc_monomorphize::collector::collect_neighbours
   4: rustc_monomorphize::collector::collect_items_rec
   5: rustc_monomorphize::collector::collect_items_rec
   6: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
   7: rustc_monomorphize::collector::collect_crate_mono_items
   8: rustc_monomorphize::partitioning::collect_and_partition_mono_items
   9: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), (&std::collections::hash::set::HashSet<rustc_span::def_id::DefId, core::hash::BuildHasherDefault<rustc_hash::FxHasher>>, &[rustc_middle::mir::mono::CodegenUnit])>>
  10: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::collect_and_partition_mono_items, rustc_query_impl::plumbing::QueryCtxt>
  11: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::collect_and_partition_mono_items
  12: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  13: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  14: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
  15: <rustc_interface::passes::QueryContext>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_errors::ErrorReported>>
  16: <rustc_interface::queries::Queries>::ongoing_codegen
  17: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>>
  18: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}>
  19: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: 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: rustc 1.58.0-nightly (c390d69a6 2021-10-28) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: internal compiler error: Encountered error `Unimplemented` selecting `Binder(<u32 as Bar>, [])` during codegen
  |
  = note: delayed at compiler/rustc_trait_selection/src/traits/codegen.rs:68:32

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', compiler/rustc_errors/src/lib.rs:1167:13
stack backtrace:
   0:     0x7f8aec4c076c - std::backtrace_rs::backtrace::libunwind::trace::hc6c3491277866fea
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f8aec4c076c - std::backtrace_rs::backtrace::trace_unsynchronized::h4524f073368a5b13
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f8aec4c076c - std::sys_common::backtrace::_print_fmt::h0d0cace6159902af
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x7f8aec4c076c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3e6af6f05919a7fc
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x7f8aec51d9ac - core::fmt::write::h72801a82c94e6ff1
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/fmt/mod.rs:1149:17
   5:     0x7f8aec4b0e95 - std::io::Write::write_fmt::ha4f5d34aaccbac84
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/io/mod.rs:1696:15
   6:     0x7f8aec4c39c0 - std::sys_common::backtrace::_print::heed69f5ce9a8e189
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x7f8aec4c39c0 - std::sys_common::backtrace::print::h5f3918bd80c09252
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x7f8aec4c39c0 - std::panicking::default_hook::{{closure}}::h5af30648530eb3d0
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:210:50
   9:     0x7f8aec4c356b - std::panicking::default_hook::he88d5fb1ba1b4c19
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:227:9
  10:     0x7f8aecc57e31 - rustc_driver[98914a17e63058c]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7f8aec4c41d9 - std::panicking::rust_panic_with_hook::h01febc308b2b313b
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:607:17
  12:     0x7f8aec4c3c90 - std::panicking::begin_panic_handler::{{closure}}::h24a6d13f5560b71f
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:499:13
  13:     0x7f8aec4c0c14 - std::sys_common::backtrace::__rust_end_short_backtrace::h3e2917f0da9fbc5c
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys_common/backtrace.rs:139:18
  14:     0x7f8aec4c3bf9 - rust_begin_unwind
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:495:5
  15:     0x7f8aec489151 - core::panicking::panic_fmt::h7b8580d81fcbbacd
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/panicking.rs:106:14
  16:     0x7f8aedd62bac - core[cc79c391059f8e46]::panicking::panic_display::<&str>
  17:     0x7f8aef446666 - <rustc_errors[932abaefb61eb634]::HandlerInner>::flush_delayed
  18:     0x7f8aef444d7d - <rustc_errors[932abaefb61eb634]::HandlerInner as core[cc79c391059f8e46]::ops::drop::Drop>::drop
  19:     0x7f8aeeb2a346 - core[cc79c391059f8e46]::ptr::drop_in_place::<rustc_session[3b6910ad19e800a6]::parse::ParseSess>
  20:     0x7f8aeeb2ca3a - <alloc[9a4bc13598ff604f]::rc::Rc<rustc_session[3b6910ad19e800a6]::session::Session> as core[cc79c391059f8e46]::ops::drop::Drop>::drop
  21:     0x7f8aeeb0786d - core[cc79c391059f8e46]::ptr::drop_in_place::<rustc_interface[71a95cb40f833645]::interface::Compiler>
  22:     0x7f8aeeb076e5 - rustc_span[b6a32fa5db97fd22]::with_source_map::<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_interface[71a95cb40f833645]::interface::create_compiler_and_run<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}>
  23:     0x7f8aeeb179c0 - <scoped_tls[3fea4c3dcac147b1]::ScopedKey<rustc_span[b6a32fa5db97fd22]::SessionGlobals>>::set::<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>
  24:     0x7f8aeeb09a15 - std[fcea40badc263c8f]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>
  25:     0x7f8aeeb2c0a2 - <<std[fcea40badc263c8f]::thread::Builder>::spawn_unchecked<rustc_interface[71a95cb40f833645]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[71a95cb40f833645]::interface::run_compiler<core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>, rustc_driver[98914a17e63058c]::run_compiler::{closure#1}>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#0}, core[cc79c391059f8e46]::result::Result<(), rustc_errors[932abaefb61eb634]::ErrorReported>>::{closure#1} as core[cc79c391059f8e46]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  26:     0x7f8aec4cf4c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hd81bd86213781012
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/alloc/src/boxed.rs:1691:9
  27:     0x7f8aec4cf4c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7b3e346f5d8f6d6a
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/alloc/src/boxed.rs:1691:9
  28:     0x7f8aec4cf4c3 - std::sys::unix::thread::Thread::new::thread_start::ha575792f17151d60
                               at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/sys/unix/thread.rs:106:17
  29:     0x7f8aec408609 - start_thread
  30:     0x7f8aec31c293 - clone
  31:                0x0 - <unknown>

error: internal compiler error: unexpected panic

note: 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: rustc 1.58.0-nightly (c390d69a6 2021-10-28) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
thread panicked while panicking. aborting.

Using a custom trait instead of Future/FnOnce:

#![feature(generic_associated_types)]
#![feature(type_alias_impl_trait)]

trait Bar {
    fn bar(&self);
}

trait Baz {
    fn baz(&self);
}

trait Foo {
    type FooFn<B>: Baz;
    
    fn foo<B: Bar>(&self, bar: B) -> Self::FooFn<B>;
}

struct MyFoo;
impl Foo for MyFoo {
    type FooFn<B> = impl Baz;
    
    fn foo<B: Bar>(&self, bar: B) -> Self::FooFn<B> {
        MyBaz(bar)
    }
}

struct MyBaz<B: Bar>(B);
impl <B: Bar> Baz for MyBaz<B> {
    fn baz(&self) {}
}

fn main() {
    let boom: <MyFoo as Foo>::FooFn<u32> = unsafe { core::mem::zeroed() };
    boom.baz();
}
Output
error: internal compiler error: Encountered errors `[FulfillmentError(Obligation(predicate=Binder(TraitPredicate(<u32 as Bar>, polarity:Positive), []), depth=1),Unimplemented)]` resolving bounds after type-checking
  |
  = note: delayed at compiler/rustc_trait_selection/src/traits/codegen.rs:124:24

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', compiler/rustc_errors/src/lib.rs:1167:13
stack backtrace:
   0: rust_begin_unwind
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/std/src/panicking.rs:495:5
   1: core::panicking::panic_fmt
             at /rustc/c390d69a615f095208ac94841f3310268521b2ee/library/core/src/panicking.rs:106:14
   2: core::panicking::panic_display::<&str>
   3: <rustc_errors::HandlerInner>::flush_delayed
   4: <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop
   5: core::ptr::drop_in_place::<rustc_session::parse::ParseSess>
   6: <alloc::rc::Rc<rustc_session::session::Session> as core::ops::drop::Drop>::drop
   7: core::ptr::drop_in_place::<rustc_interface::interface::Compiler>
   8: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}>
   9: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: 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: rustc 1.58.0-nightly (c390d69a6 2021-10-28) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack

@SNCPlay42
Copy link
Contributor

If you use a non-associated type alias instead of a GAT, the async and FnOnce versions still ICE but the custom trait version doesn't. See #90409

@jackh726
Copy link
Member

jackh726 commented Nov 1, 2021

GATs issue triage: not blocking. Given that there are similar repros without GATs, this basically confirms my suspicion that this isn't a GAT issue, but a TAIT one.

@jackh726 jackh726 added the GATs-triaged Issues using the `generic_associated_types` feature that have been triaged label Nov 1, 2021
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Dec 5, 2021
@Alexendoo
Copy link
Member

The custom trait version no longer ICEs since #90948, the rest still do

@JohnTitor
Copy link
Member

JohnTitor commented May 14, 2022

Triage: All the examples on the comment (#90400 (comment)) are no longer ICE, I'm going to mark as E-needs-test.

@JohnTitor JohnTitor added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label May 14, 2022
JohnTitor added a commit to JohnTitor/rust that referenced this issue May 23, 2022
@JohnTitor
Copy link
Member

Triage: the original code still triggers an ICE. In #97309, I've added some tests based on #90400 (comment).
Unmarking this as E-needs-test and marking as E-needs-mcve, so that we can include the original's to glacier.

@JohnTitor JohnTitor added E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example and removed E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. glacier ICE tracked in rust-lang/glacier. labels May 23, 2022
Dylan-DPC added a commit to Dylan-DPC/rust that referenced this issue May 23, 2022
…rrors

Add some regression tests for rust-lang#90400

This adds two regression tests taken from rust-lang#90400 (comment).
Note that we cannot close the issue right now as the [original code](rust-lang#90400 (comment)) still triggers an ICE.

r? `@compiler-errors`
bors added a commit to rust-lang-ci/rust that referenced this issue May 23, 2022
Rollup of 4 pull requests

Successful merges:

 - rust-lang#96129 (Document rounding for floating-point primitive operations and string parsing)
 - rust-lang#97286 (Add new eslint rule to prevent whitespace before function call paren)
 - rust-lang#97292 (Lifetime variance fixes for rustc)
 - rust-lang#97309 (Add some regression tests for rust-lang#90400)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@oli-obk
Copy link
Contributor

oli-obk commented Sep 8, 2022

The original doesn't ICE anymore on playground, it reports a few errors, but fixing them produces no ICEs at any stage

@oli-obk oli-obk removed their assignment Sep 8, 2022
@jackh726 jackh726 removed the E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example label Sep 8, 2022
@jackh726 jackh726 added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label Sep 8, 2022
@oli-obk oli-obk moved this from Todo to Done in type alias impl trait stabilization Sep 9, 2022
@oli-obk oli-obk moved this from Done to Can do after stabilization in type alias impl trait stabilization Oct 30, 2022
@oli-obk oli-obk moved this from Can do after stabilization to Done in type alias impl trait stabilization Oct 30, 2022
@JohnTitor JohnTitor added the E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example label Dec 21, 2022
@matthiaskrgr
Copy link
Member

any reason why this is not closed yet? we do have tests for this inside rustc

@oli-obk oli-obk closed this as completed Apr 19, 2024
@fmease fmease added the A-GATs Area: Generic associated types (GATs) label Nov 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-GATs Area: Generic associated types (GATs) C-bug Category: This is a bug. E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs F-type_alias_impl_trait `#[feature(type_alias_impl_trait)]` GATs-triaged Issues using the `generic_associated_types` feature that have been triaged 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.
Development

No branches or pull requests

9 participants