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

ICEs and transmutes in safe Rust with associated_type_defaults and generic_associated_types #74816

Closed
steffahn opened this issue Jul 27, 2020 · 8 comments · Fixed by #77956
Closed
Labels
A-associated-items Area: Associated items such as associated types and consts. A-traits Area: Trait system C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. F-associated_type_defaults `#![feature(associated_type_defaults)]` F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ I-unsound Issue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness requires-nightly This issue requires a nightly compiler in some way. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@steffahn
Copy link
Member

steffahn commented Jul 27, 2020

#![feature(associated_type_defaults)]
#![feature(generic_associated_types)]
#![allow(incomplete_features)]

trait Trait1 {
    fn foo();
}

trait Trait2 {
    type Associated: Trait1 = Self;
}

impl Trait2 for () {}

fn call_foo<T: Trait2>() {
    T::Associated::foo()
}

fn main() {
    call_foo::<()>()
}

(Playground)

Errors:

   Compiling playground v0.0.1 (/playground)
thread 'rustc' panicked at 'called `Result::unwrap()` on an `Err` value: ErrorReported', src/librustc_mir/monomorphize/collector.rs:722:84
note: run with `RUST_BACKTRACE=1` environment variable to display a 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.47.0-nightly (6c8927b0c 2020-07-26) 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

error: internal compiler error: Encountered error `Unimplemented` selecting `Binder(<() as Trait1>)` during codegen
  |
  = note: delayed at /rustc/6c8927b0cf80ceee19386026cf9d7fd4fd9d486f/src/librustc_session/session.rs:436:27

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:366:17
stack backtrace:
   0:     0x7f99ed90b215 - backtrace::backtrace::libunwind::trace::h75aedf5f78e5147f
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
   1:     0x7f99ed90b215 - backtrace::backtrace::trace_unsynchronized::h18fb73c9ac9ae753
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
   2:     0x7f99ed90b215 - std::sys_common::backtrace::_print_fmt::h65f97470ff13ec84
                               at src/libstd/sys_common/backtrace.rs:78
   3:     0x7f99ed90b215 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hee061c54ddc9f024
                               at src/libstd/sys_common/backtrace.rs:59
   4:     0x7f99ed94741c - core::fmt::write::hfbd2baad61ed21a8
                               at src/libcore/fmt/mod.rs:1117
   5:     0x7f99ed8fcf52 - std::io::Write::write_fmt::h72f9bd227f40dc62
                               at src/libstd/io/mod.rs:1508
   6:     0x7f99ed9100b0 - std::sys_common::backtrace::_print::h2d2cd8fe02feb5fa
                               at src/libstd/sys_common/backtrace.rs:62
   7:     0x7f99ed9100b0 - std::sys_common::backtrace::print::h801b12991252ba7c
                               at src/libstd/sys_common/backtrace.rs:49
   8:     0x7f99ed9100b0 - std::panicking::default_hook::{{closure}}::h25fc1fbf3b63b5c8
                               at src/libstd/panicking.rs:198
   9:     0x7f99ed90fdfc - std::panicking::default_hook::h62c897957a5e0f26
                               at src/libstd/panicking.rs:217
  10:     0x7f99ee094719 - rustc_driver::report_ice::h54e3b417084b44b0
  11:     0x7f99ed910828 - std::panicking::rust_panic_with_hook::hb8a276f163c59810
                               at src/libstd/panicking.rs:530
  12:     0x7f99f0c4281e - std::panicking::begin_panic::h153d579aeb536459
  13:     0x7f99f0c764d2 - <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop::h034d0923c0910956
  14:     0x7f99ee0d8e26 - core::ptr::drop_in_place::hbd983241884bba55
  15:     0x7f99ee0dd5a6 - <alloc::rc::Rc<T> as core::ops::drop::Drop>::drop::h275f461ab738eaba
  16:     0x7f99ee0f556d - core::ptr::drop_in_place::hbcfd671e22c96cdd
  17:     0x7f99ee0ee7b4 - rustc_span::with_source_map::hd3215c6d07150bbc
  18:     0x7f99ee050fb6 - rustc_interface::interface::create_compiler_and_run::hc502b394ead637d1
  19:     0x7f99ee07a32d - scoped_tls::ScopedKey<T>::set::hb09c39dbfa5a4396
  20:     0x7f99ee0a04a2 - std::sys_common::backtrace::__rust_begin_short_backtrace::h4fa4ac8c571754e6
  21:     0x7f99ee05d26e - core::ops::function::FnOnce::call_once{{vtable.shim}}::h23cc72206c0cf83b
  22:     0x7f99ed91ed3a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h3e41d894970cea2f
                               at /rustc/6c8927b0cf80ceee19386026cf9d7fd4fd9d486f/src/liballoc/boxed.rs:1074
  23:     0x7f99ed91ed3a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h9a318bb00b7f8871
                               at /rustc/6c8927b0cf80ceee19386026cf9d7fd4fd9d486f/src/liballoc/boxed.rs:1074
  24:     0x7f99ed91ed3a - std::sys::unix::thread::Thread::new::thread_start::hf522342530b04cb6
                               at src/libstd/sys/unix/thread.rs:87
  25:     0x7f99ed879609 - start_thread
  26:     0x7f99ed78d103 - __clone
  27:                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.47.0-nightly (6c8927b0c 2020-07-26) 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

thread panicked while panicking. aborting.
error: could not compile `playground`.

Caused by:
  process didn't exit successfully: `rustc --crate-name playground --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -Cembed-bitcode=no -C codegen-units=1 -C debuginfo=2 -C metadata=34fafd407811ed5f -C extra-filename=-34fafd407811ed5f --out-dir /playground/target/debug/deps -L dependency=/playground/target/debug/deps --extern addr2line=/playground/target/debug/deps/libaddr2line-09cd402dfa263d63.rlib --extern adler=/playground/target/debug/deps/libadler-1d19c065becb43a9.rlib --extern adler32=/playground/target/debug/deps/libadler32-1e2c19a11a285018.rlib --extern aho_corasick=/playground/target/debug/deps/libaho_corasick-97990c62e415b879.rlib --extern ansi_term_0_11_0=/playground/target/debug/deps/libansi_term-f9c36064041e035b.rlib --extern ansi_term=/playground/target/debug/deps/libansi_term-15d8665e3f7d7651.rlib --extern approx=/playground/target/debug/deps/libapprox-9bb123a617349fd5.rlib --extern arc_swap=/playground/target/debug/deps/libarc_swap-727cc1ebd93fbcf6.rlib --extern arrayvec=/playground/target/debug/deps/libarrayvec-8ec31b6df4b3bb41.rlib --extern async_trait=/playground/target/debug/deps/libasync_trait-4dfe7f1b37301b74.so --extern atty=/playground/target/debug/deps/libatty-019853330f6cf0dd.rlib --extern autocfg=/playground/target/debug/deps/libautocfg-dd4c1d2c6abe00ef.rlib --extern backtrace=/playground/target/debug/deps/libbacktrace-0dc91369894b95f6.rlib --extern backtrace_sys=/playground/target/debug/deps/libbacktrace_sys-1c37641c4b65c031.rlib --extern base64=/playground/target/debug/deps/libbase64-e8aa598c59cea85d.rlib --extern bit_set=/playground/target/debug/deps/libbit_set-42c45fa812545a5f.rlib --extern bit_vec=/playground/target/debug/deps/libbit_vec-7df4504d4542a0f6.rlib --extern bitflags=/playground/target/debug/deps/libbitflags-7f22ae8a7a63e41a.rlib --extern block_buffer=/playground/target/debug/deps/libblock_buffer-063bb209ffda2529.rlib --extern bstr=/playground/target/debug/deps/libbstr-6b17dcbad32de9c9.rlib --extern bytemuck=/playground/target/debug/deps/libbytemuck-226bdbd319141bf5.rlib --extern byteorder=/playground/target/debug/deps/libbyteorder-8a38b4bed5c0c4bd.rlib --extern bytes=/playground/target/debug/deps/libbytes-02d7ccab3f53427e.rlib --extern cc=/playground/target/debug/deps/libcc-ab832bb8d2584f58.rlib --extern cfg_if=/playground/target/debug/deps/libcfg_if-5e63651c0fbcfb9f.rlib --extern chrono=/playground/target/debug/deps/libchrono-a983f4b0fcb9dfe9.rlib --extern clap=/playground/target/debug/deps/libclap-4765bfa2ec303e78.rlib --extern color_quant=/playground/target/debug/deps/libcolor_quant-122ea42d6a7f28aa.rlib --extern cpuid_bool=/playground/target/debug/deps/libcpuid_bool-28a27ec781541af3.rlib --extern crc32fast=/playground/target/debug/deps/libcrc32fast-9b88c1157c315385.rlib --extern crossbeam=/playground/target/debug/deps/libcrossbeam-4ba79ba2b8c147fa.rlib --extern crossbeam_channel=/playground/target/debug/deps/libcrossbeam_channel-53aad1bff5ad8dcc.rlib --extern crossbeam_deque=/playground/target/debug/deps/libcrossbeam_deque-cfdd21c3d3647481.rlib --extern crossbeam_epoch=/playground/target/debug/deps/libcrossbeam_epoch-febcf779058f0587.rlib --extern crossbeam_queue=/playground/target/debug/deps/libcrossbeam_queue-ca0bb93159850f30.rlib --extern crossbeam_utils=/playground/target/debug/deps/libcrossbeam_utils-169fe6650f664b8d.rlib --extern crypto_mac=/playground/target/debug/deps/libcrypto_mac-c4605a477762f4ea.rlib --extern csv=/playground/target/debug/deps/libcsv-d9c1a34249153b47.rlib --extern csv_core=/playground/target/debug/deps/libcsv_core-bbe762330a0d2ac9.rlib --extern data_encoding=/playground/target/debug/deps/libdata_encoding-21f799362d6c856f.rlib --extern deflate=/playground/target/debug/deps/libdeflate-eac75042a448ccd2.rlib --extern digest=/playground/target/debug/deps/libdigest-3222022feda792e4.rlib --extern dtoa=/playground/target/debug/deps/libdtoa-e4e5fdc7fb258f94.rlib --extern either=/playground/target/debug/deps/libeither-3a8498ca2e15ad22.rlib --extern encoding_rs=/playground/target/debug/deps/libencoding_rs-545ac8c1ab645139.rlib --extern env_logger=/playground/target/debug/deps/libenv_logger-d4b4a2292ea79fcd.rlib --extern error_chain=/playground/target/debug/deps/liberror_chain-2dc77c3f4a4b8b6b.rlib --extern failure=/playground/target/debug/deps/libfailure-758f9ffed6170ca2.rlib --extern failure_derive=/playground/target/debug/deps/libfailure_derive-b88b4f422aa3adcb.so --extern fallible_iterator=/playground/target/debug/deps/libfallible_iterator-e548a5a99dc09c73.rlib --extern fallible_streaming_iterator=/playground/target/debug/deps/libfallible_streaming_iterator-e99995182f8e1279.rlib --extern filetime=/playground/target/debug/deps/libfiletime-b9b22bd9fcc558d4.rlib --extern fixedbitset=/playground/target/debug/deps/libfixedbitset-ddd48c419fefc266.rlib --extern flate2=/playground/target/debug/deps/libflate2-b2fea07c820ccaca.rlib --extern fnv=/playground/target/debug/deps/libfnv-e0e52c5a340af4ba.rlib --extern foreign_types=/playground/target/debug/deps/libforeign_types-78b988299081dd51.rlib --extern foreign_types_shared=/playground/target/debug/deps/libforeign_types_shared-601cc5361813bb55.rlib --extern futf=/playground/target/debug/deps/libfutf-f6a09f665d3fb4cc.rlib --extern futures=/playground/target/debug/deps/libfutures-499e0c2881eb5af7.rlib --extern futures_channel=/playground/target/debug/deps/libfutures_channel-1c4550d0595ab1b2.rlib --extern futures_core=/playground/target/debug/deps/libfutures_core-7e277a7a9bcf7bbf.rlib --extern futures_executor=/playground/target/debug/deps/libfutures_executor-db9acddf800d1834.rlib --extern futures_io=/playground/target/debug/deps/libfutures_io-dc7261a8cf3bde9f.rlib --extern futures_macro=/playground/target/debug/deps/libfutures_macro-b71a244e59479658.so --extern futures_sink=/playground/target/debug/deps/libfutures_sink-95d26c5ec544fda9.rlib --extern futures_task=/playground/target/debug/deps/libfutures_task-a244fb88ae606bb5.rlib --extern futures_util=/playground/target/debug/deps/libfutures_util-b93ff591e50d4ed9.rlib --extern generic_array_0_13_2=/playground/target/debug/deps/libgeneric_array-3f0d9c67ba717b6e.rlib --extern generic_array=/playground/target/debug/deps/libgeneric_array-a199e49f32bad737.rlib --extern getrandom=/playground/target/debug/deps/libgetrandom-82d2bd061e5f1d37.rlib --extern gif=/playground/target/debug/deps/libgif-018cd4520a2598f1.rlib --extern gimli=/playground/target/debug/deps/libgimli-4ca7ec4cc9cabe1d.rlib --extern glob=/playground/target/debug/deps/libglob-f7ca6c4884f26824.rlib --extern h2=/playground/target/debug/deps/libh2-90492a2fe36a6ba5.rlib --extern hmac=/playground/target/debug/deps/libhmac-7af6279260854045.rlib --extern html5ever=/playground/target/debug/deps/libhtml5ever-6380e523df93dd86.rlib --extern http=/playground/target/debug/deps/libhttp-05c116b859ba5661.rlib --extern http_body=/playground/target/debug/deps/libhttp_body-a1e57ae86d7b162c.rlib --extern httparse=/playground/target/debug/deps/libhttparse-71524113cf32e47e.rlib --extern humantime=/playground/target/debug/deps/libhumantime-6a5f421d01cf818b.rlib --extern hyper=/playground/target/debug/deps/libhyper-f03fd02ce918aeba.rlib --extern hyper_tls=/playground/target/debug/deps/libhyper_tls-108549c1163dd0cc.rlib --extern idna=/playground/target/debug/deps/libidna-1d86336da7813c7c.rlib --extern image=/playground/target/debug/deps/libimage-6d0fc9083dddccde.rlib --extern indexmap=/playground/target/debug/deps/libindexmap-e13aea84d165ad27.rlib --extern instant=/playground/target/debug/deps/libinstant-8813537e16353ac0.rlib --extern iovec=/playground/target/debug/deps/libiovec-ce411daaf8037a65.rlib --extern itertools=/playground/target/debug/deps/libitertools-a409a6a183375d7c.rlib --extern itoa=/playground/target/debug/deps/libitoa-6af6cff95d58e105.rlib --extern jpeg_decoder=/playground/target/debug/deps/libjpeg_decoder-9c52f2f1c1b3c939.rlib --extern kernel32=/playground/target/debug/deps/libkernel32-e7c059900dde345e.rlib --extern lazy_static=/playground/target/debug/deps/liblazy_static-4655d28019c9fdac.rlib --extern libc=/playground/target/debug/deps/liblibc-5bea7586dce7bf8d.rlib --extern libm=/playground/target/debug/deps/liblibm-d12e6c34e19b75bf.rlib --extern libsqlite3_sys=/playground/target/debug/deps/liblibsqlite3_sys-a04b3613dc4ffd3a.rlib --extern linked_hash_map=/playground/target/debug/deps/liblinked_hash_map-54665a8bd4f1c14f.rlib --extern lock_api_0_3_4=/playground/target/debug/deps/liblock_api-13f4bd93acec1758.rlib --extern lock_api=/playground/target/debug/deps/liblock_api-9aed973cbb02302d.rlib --extern log=/playground/target/debug/deps/liblog-919fb5e36f9e1b81.rlib --extern log_mdc=/playground/target/debug/deps/liblog_mdc-bb72d33d650763c0.rlib --extern log4rs=/playground/target/debug/deps/liblog4rs-fefc6f7e949d18e9.rlib --extern lru_cache=/playground/target/debug/deps/liblru_cache-50567c107d7947e7.rlib --extern lzw=/playground/target/debug/deps/liblzw-8e3b23eaba63cfcd.rlib --extern mac=/playground/target/debug/deps/libmac-2389befa9c8ca136.rlib --extern markup5ever=/playground/target/debug/deps/libmarkup5ever-8d6b63cfc1e3c3f4.rlib --extern markup5ever_rcdom=/playground/target/debug/deps/libmarkup5ever_rcdom-c65267322ca2833f.rlib --extern matches=/playground/target/debug/deps/libmatches-1a4c49e17b6bc9de.rlib --extern matrixmultiply=/playground/target/debug/deps/libmatrixmultiply-a8b775e7358be4ae.rlib --extern maybe_uninit=/playground/target/debug/deps/libmaybe_uninit-c118cddd73862e9d.rlib --extern md5=/playground/target/debug/deps/libmd5-a086d500cb772bca.rlib --extern memchr=/playground/target/debug/deps/libmemchr-072eef9a85b28763.rlib --extern memmap=/playground/target/debug/deps/libmemmap-21172c5322cea41b.rlib --extern memoffset=/playground/target/debug/deps/libmemoffset-7faf44aa1905f8a4.rlib --extern mime=/playground/target/debug/deps/libmime-cace8d7394c258b1.rlib --extern mime_guess=/playground/target/debug/deps/libmime_guess-b5304a422ecb95d3.rlib --extern miniz_oxide_0_3_7=/playground/target/debug/deps/libminiz_oxide-874405e718c07fdc.rlib --extern miniz_oxide=/playground/target/debug/deps/libminiz_oxide-832f3b115c8cb0eb.rlib --extern mio_0_6_22=/playground/target/debug/deps/libmio-53f7029183071df7.rlib --extern mio=/playground/target/debug/deps/libmio-be6cf5d13274b2cd.rlib --extern mio_uds=/playground/target/debug/deps/libmio_uds-be2199f6b7994e2a.rlib --extern nalgebra=/playground/target/debug/deps/libnalgebra-8921753d6304202d.rlib --extern native_tls=/playground/target/debug/deps/libnative_tls-4c424bc36ef26df8.rlib --extern ndarray=/playground/target/debug/deps/libndarray-6dea2cdf74d2626e.rlib --extern net2=/playground/target/debug/deps/libnet2-fac475245849a736.rlib --extern debug_unreachable=/playground/target/debug/deps/libdebug_unreachable-cfaa89fb0a824a04.rlib --extern nodrop=/playground/target/debug/deps/libnodrop-79d9c492b7dba4b1.rlib --extern num=/playground/target/debug/deps/libnum-e4366089c72a0785.rlib --extern num_bigint=/playground/target/debug/deps/libnum_bigint-8fd95bb21d1755ae.rlib --extern num_complex_0_2_4=/playground/target/debug/deps/libnum_complex-6738ca89d0ec2710.rlib --extern num_complex=/playground/target/debug/deps/libnum_complex-e59382dc35447343.rlib --extern num_integer=/playground/target/debug/deps/libnum_integer-3cf472f8ad28d07c.rlib --extern num_iter=/playground/target/debug/deps/libnum_iter-bf747a696f239f8c.rlib --extern num_rational_0_2_4=/playground/target/debug/deps/libnum_rational-401a09464b79a766.rlib --extern num_rational=/playground/target/debug/deps/libnum_rational-1b317d07cb4f11b5.rlib --extern num_traits=/playground/target/debug/deps/libnum_traits-5efc2b67991f5a2a.rlib --extern num_cpus=/playground/target/debug/deps/libnum_cpus-3b51f588c19f5ea3.rlib --extern object=/playground/target/debug/deps/libobject-2687b955042bdd85.rlib --extern once_cell=/playground/target/debug/deps/libonce_cell-e7e58b16b7f86c1c.rlib --extern opaque_debug=/playground/target/debug/deps/libopaque_debug-fdc9ccbb9d15ca1b.rlib --extern openssl=/playground/target/debug/deps/libopenssl-5a5db9da4b56b49d.rlib --extern openssl_probe=/playground/target/debug/deps/libopenssl_probe-8d1abe6efdf061b7.rlib --extern openssl_sys=/playground/target/debug/deps/libopenssl_sys-1c02b7c8c613a3b0.rlib --extern ordered_float=/playground/target/debug/deps/libordered_float-77cb4f338cef3240.rlib --extern parking_lot_0_10_2=/playground/target/debug/deps/libparking_lot-e22422216338d06f.rlib --extern parking_lot=/playground/target/debug/deps/libparking_lot-3db8f717423cbb44.rlib --extern parking_lot_core_0_7_2=/playground/target/debug/deps/libparking_lot_core-e9631fb522852f99.rlib --extern parking_lot_core=/playground/target/debug/deps/libparking_lot_core-3911c5195b306205.rlib --extern paste=/playground/target/debug/deps/libpaste-1d47e16aa4958841.rlib --extern paste_impl=/playground/target/debug/deps/libpaste_impl-7336d0d4b82d156b.so --extern percent_encoding=/playground/target/debug/deps/libpercent_encoding-ed0297d36a2dcba8.rlib --extern petgraph=/playground/target/debug/deps/libpetgraph-ed67d6a6083e1ed2.rlib --extern phf=/playground/target/debug/deps/libphf-b4bfb55a6d8c7754.rlib --extern phf_codegen=/playground/target/debug/deps/libphf_codegen-8b1df9dc61afd6f5.rlib --extern phf_generator=/playground/target/debug/deps/libphf_generator-9024610cb3bc042a.rlib --extern phf_shared=/playground/target/debug/deps/libphf_shared-7049ef6deb896e40.rlib --extern pin_project=/playground/target/debug/deps/libpin_project-e7793e3197433176.rlib --extern pin_project_internal=/playground/target/debug/deps/libpin_project_internal-da7406524791f3e6.so --extern pin_project_lite=/playground/target/debug/deps/libpin_project_lite-364e944e1d4b3b28.rlib --extern pin_utils=/playground/target/debug/deps/libpin_utils-e795fd1d5f077263.rlib --extern pkg_config=/playground/target/debug/deps/libpkg_config-cda2083dead04b3c.rlib --extern png=/playground/target/debug/deps/libpng-cb27cfdcd7a388b0.rlib --extern postgres=/playground/target/debug/deps/libpostgres-720f5377eb43a43f.rlib --extern postgres_protocol=/playground/target/debug/deps/libpostgres_protocol-cdd64ffd95684fd1.rlib --extern postgres_types=/playground/target/debug/deps/libpostgres_types-0ef7360c3830c92c.rlib --extern ppv_lite86=/playground/target/debug/deps/libppv_lite86-bbba14bbacec6f8e.rlib --extern precomputed_hash=/playground/target/debug/deps/libprecomputed_hash-db277b190262067a.rlib --extern proc_macro_hack=/playground/target/debug/deps/libproc_macro_hack-0ed88efccc84f714.so --extern proc_macro_nested=/playground/target/debug/deps/libproc_macro_nested-60fd7d175879d9c2.rlib --extern proc_macro2=/playground/target/debug/deps/libproc_macro2-57c5f3640eefcec9.rlib --extern quick_error=/playground/target/debug/deps/libquick_error-a899ce1a2ed5904a.rlib --extern quote=/playground/target/debug/deps/libquote-3c78d8093096821b.rlib --extern rand=/playground/target/debug/deps/librand-cbf3ca8b2417ad36.rlib --extern rand_chacha=/playground/target/debug/deps/librand_chacha-d3f8c4336e8003e9.rlib --extern rand_core=/playground/target/debug/deps/librand_core-8072ed5499a97a7e.rlib --extern rand_distr=/playground/target/debug/deps/librand_distr-8b801c44720b2981.rlib --extern rand_hc=/playground/target/debug/deps/librand_hc-72d8dfe2b12f1405.rlib --extern rand_pcg=/playground/target/debug/deps/librand_pcg-81a31ac4e6d43df4.rlib --extern rand_xorshift=/playground/target/debug/deps/librand_xorshift-3b44d3f96b0dba7c.rlib --extern rawpointer=/playground/target/debug/deps/librawpointer-92001921fa0853a3.rlib --extern rayon=/playground/target/debug/deps/librayon-a13aa86f494968f8.rlib --extern rayon_core=/playground/target/debug/deps/librayon_core-34ada3380b210645.rlib --extern regex=/playground/target/debug/deps/libregex-db90baf4c16e6a0e.rlib --extern regex_automata=/playground/target/debug/deps/libregex_automata-f4b2a84180507c62.rlib --extern regex_syntax=/playground/target/debug/deps/libregex_syntax-315d46249de278db.rlib --extern remove_dir_all=/playground/target/debug/deps/libremove_dir_all-a7be871789289062.rlib --extern reqwest=/playground/target/debug/deps/libreqwest-bf2d510e3f52fed9.rlib --extern ring=/playground/target/debug/deps/libring-076090952f0e49de.rlib --extern rusqlite=/playground/target/debug/deps/librusqlite-795d9e9834543f89.rlib --extern rustc_demangle=/playground/target/debug/deps/librustc_demangle-b3d51e76aa74aedb.rlib --extern rustc_serialize=/playground/target/debug/deps/librustc_serialize-5a39841c4b19bd4e.rlib --extern rustc_version=/playground/target/debug/deps/librustc_version-b4788c4c5c3639f2.rlib --extern ryu=/playground/target/debug/deps/libryu-dc5e41a94bf7c57f.rlib --extern same_file=/playground/target/debug/deps/libsame_file-79d6119a8df5b722.rlib --extern scoped_threadpool=/playground/target/debug/deps/libscoped_threadpool-ee96da93a4c5d779.rlib --extern scopeguard=/playground/target/debug/deps/libscopeguard-bac2c3bc56c4118c.rlib --extern select=/playground/target/debug/deps/libselect-8f6fbec5d8da628d.rlib --extern semver_0_9_0=/playground/target/debug/deps/libsemver-f025bedea80fb2a4.rlib --extern semver=/playground/target/debug/deps/libsemver-05a78c5c9ddaa2c4.rlib --extern semver_parser_0_7_0=/playground/target/debug/deps/libsemver_parser-8702d57e1e78dd2b.rlib --extern semver_parser=/playground/target/debug/deps/libsemver_parser-ffaef7193489bc87.rlib --extern serde=/playground/target/debug/deps/libserde-229c4fc4ead8141c.rlib --extern serde_value=/playground/target/debug/deps/libserde_value-7d7c45a9570378ae.rlib --extern serde_derive=/playground/target/debug/deps/libserde_derive-c217488ff00b2e3a.so --extern serde_json=/playground/target/debug/deps/libserde_json-563254a3b5b90689.rlib --extern serde_urlencoded=/playground/target/debug/deps/libserde_urlencoded-3c6cbd96f11fc824.rlib --extern serde_yaml=/playground/target/debug/deps/libserde_yaml-17567c060caff135.rlib --extern sha2=/playground/target/debug/deps/libsha2-c3636fc508d2f046.rlib --extern simba=/playground/target/debug/deps/libsimba-897209d5748db3cc.rlib --extern siphasher=/playground/target/debug/deps/libsiphasher-333d36ebba60d059.rlib --extern slab=/playground/target/debug/deps/libslab-fa41dc1d348e48f5.rlib --extern smallvec=/playground/target/debug/deps/libsmallvec-19cd1ae41956fa21.rlib --extern socket2=/playground/target/debug/deps/libsocket2-669bb1576d01e19d.rlib --extern spin=/playground/target/debug/deps/libspin-7dfba62559697b24.rlib --extern standback=/playground/target/debug/deps/libstandback-d33c572ed3b863a2.rlib --extern string_cache=/playground/target/debug/deps/libstring_cache-74a642ea94c6e101.rlib --extern string_cache_codegen=/playground/target/debug/deps/libstring_cache_codegen-3d2eecb0bf25b645.rlib --extern stringprep=/playground/target/debug/deps/libstringprep-44029ba638f9050d.rlib --extern strsim_0_8_0=/playground/target/debug/deps/libstrsim-10be170c35c23297.rlib --extern strsim=/playground/target/debug/deps/libstrsim-f95a36656a76f823.rlib --extern subtle=/playground/target/debug/deps/libsubtle-d1459adae4c62ed0.rlib --extern syn=/playground/target/debug/deps/libsyn-472ea434509a3ae5.rlib --extern synstructure=/playground/target/debug/deps/libsynstructure-65071f6bbef1b8df.rlib --extern tar=/playground/target/debug/deps/libtar-55fb88887db52778.rlib --extern tempfile=/playground/target/debug/deps/libtempfile-724db3ffe0b126cf.rlib --extern tendril=/playground/target/debug/deps/libtendril-83dc4eb6c23578c5.rlib --extern termcolor=/playground/target/debug/deps/libtermcolor-879399c0f5a077e7.rlib --extern textwrap_0_11_0=/playground/target/debug/deps/libtextwrap-9ffe59b190ee0291.rlib --extern textwrap=/playground/target/debug/deps/libtextwrap-7bb3de465cae5918.rlib --extern thread_id=/playground/target/debug/deps/libthread_id-d45d76903f077527.rlib --extern thread_local=/playground/target/debug/deps/libthread_local-c437d288db389e6a.rlib --extern threadpool=/playground/target/debug/deps/libthreadpool-1b6f444fa34e60fd.rlib --extern tiff=/playground/target/debug/deps/libtiff-ec356c0d37accd3a.rlib --extern time_0_1_43=/playground/target/debug/deps/libtime-ebeef07ab92115b2.rlib --extern time=/playground/target/debug/deps/libtime-9c1f926a58d8e659.rlib --extern time_macros=/playground/target/debug/deps/libtime_macros-3c91c2bdea6b1cf1.rlib --extern time_macros_impl=/playground/target/debug/deps/libtime_macros_impl-4f592f0a5e410542.so --extern tinyvec=/playground/target/debug/deps/libtinyvec-49dccec5be47d3bc.rlib --extern tokio=/playground/target/debug/deps/libtokio-29fd67628211934e.rlib --extern tokio_postgres=/playground/target/debug/deps/libtokio_postgres-155c9740fd314482.rlib --extern tokio_tls=/playground/target/debug/deps/libtokio_tls-d4c4a65524d5636d.rlib --extern tokio_util=/playground/target/debug/deps/libtokio_util-f01cc0fb81f95988.rlib --extern toml=/playground/target/debug/deps/libtoml-c012379b5bd4a93a.rlib --extern tower_service=/playground/target/debug/deps/libtower_service-59cd6be24192ecff.rlib --extern traitobject=/playground/target/debug/deps/libtraitobject-fe4968c289288002.rlib --extern try_lock=/playground/target/debug/deps/libtry_lock-a8681e5af6055dc5.rlib --extern typemap=/playground/target/debug/deps/libtypemap-9f4a9d1a65be211c.rlib --extern typenum=/playground/target/debug/deps/libtypenum-1a610a4519a0866c.rlib --extern unicase=/playground/target/debug/deps/libunicase-018ff5672c748538.rlib --extern unicode_bidi=/playground/target/debug/deps/libunicode_bidi-0870afad64dd894f.rlib --extern unicode_normalization=/playground/target/debug/deps/libunicode_normalization-059ce93cbfb1edbf.rlib --extern unicode_segmentation=/playground/target/debug/deps/libunicode_segmentation-10bac585f47e7e6b.rlib --extern unicode_width=/playground/target/debug/deps/libunicode_width-f68ad29e8cda1fac.rlib --extern unicode_xid=/playground/target/debug/deps/libunicode_xid-a4a40d0f25d56178.rlib --extern unsafe_any=/playground/target/debug/deps/libunsafe_any-2d382f6ffd5f877a.rlib --extern untrusted=/playground/target/debug/deps/libuntrusted-9386e4e38ae75640.rlib --extern url=/playground/target/debug/deps/liburl-707e0f565e773601.rlib --extern utf8=/playground/target/debug/deps/libutf8-9c6c1c8261cd32b6.rlib --extern utf8_ranges=/playground/target/debug/deps/libutf8_ranges-fa9171319e1bc5f6.rlib --extern uuid=/playground/target/debug/deps/libuuid-8a9940dd4b1e878a.rlib --extern vec_map=/playground/target/debug/deps/libvec_map-c83edaec451213ba.rlib --extern version_check=/playground/target/debug/deps/libversion_check-f7d5393087b6df14.rlib --extern void=/playground/target/debug/deps/libvoid-9ced261b8be9fc12.rlib --extern walkdir=/playground/target/debug/deps/libwalkdir-e040c5f0b12e5915.rlib --extern want=/playground/target/debug/deps/libwant-52a1f491c23e6fef.rlib --extern winapi_0_2_8=/playground/target/debug/deps/libwinapi-2365c9e177c697ef.rlib --extern winapi=/playground/target/debug/deps/libwinapi-8d0dd0a6f08754d6.rlib --extern build=/playground/target/debug/deps/libbuild-35bfe415c7bb55a1.rlib --extern xattr=/playground/target/debug/deps/libxattr-9be03baf20ed0719.rlib --extern xml5ever=/playground/target/debug/deps/libxml5ever-24f709f877a77cf7.rlib --extern yaml_rust=/playground/target/debug/deps/libyaml_rust-1435acd1fa38258d.rlib -L native=/playground/target/debug/build/backtrace-sys-68e7bd2a7a8b7985/out -L native=/playground/target/debug/build/libsqlite3-sys-5a835897624c4a35/out -L native=/playground/target/debug/build/ring-229abc19e1ae3248/out` (signal: 4, SIGILL: illegal instruction)

Removing the generic_associated_types makes this generate appropriate error messages. Seems like combining associated_type_defaults and generic_associated_types is rather uncommon, at least there are no other issues with both labels yet.

@rustbot modify labels: I-ICE, T-compiler, requires-nightly, F-associated_type_defaults, F-generic_associated_types, A-traits, A-associated-items, C-bug

@rustbot rustbot added A-associated-items Area: Associated items such as associated types and consts. A-traits Area: Trait system C-bug Category: This is a bug. F-associated_type_defaults `#![feature(associated_type_defaults)]` F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ requires-nightly This issue requires a nightly compiler in some way. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jul 27, 2020
@steffahn steffahn changed the title ICE: Encountered error Unimplemented, with associated_type_defaults and generic_associated_types ICE: “Encountered error Unimplemented”, with associated_type_defaults and generic_associated_types Jul 27, 2020
@steffahn
Copy link
Member Author

steffahn commented Jul 27, 2020

Okay, this bug allows you to do basically everything.

For example

  • assertion failed: !layout.is_unsized() (playground)
  • LLVM ERROR: Broken function found, compilation aborted! (playground)
  • arbitrary transmutes (as long as LLVM doesn’t complain like it did above) (playground)

@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@steffahn steffahn changed the title ICE: “Encountered error Unimplemented”, with associated_type_defaults and generic_associated_types ICEs and transmutes in safe Rust with associated_type_defaults and generic_associated_types Jul 27, 2020
@sfackler sfackler added the I-unsound Issue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness label Jul 27, 2020
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Aug 3, 2020
@DutchGhost
Copy link
Contributor

Okay, this bug allows you to do basically everything.

For example

* `assertion failed: !layout.is_unsized()` ([playground](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=6337f490eccc7d188c59cef65cfa95d8))

* `LLVM ERROR: Broken function found, compilation aborted!` ([playground](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=a0fe61d49ed3ead71cb4c7a879342e8c))

* arbitrary transmutes (as long as LLVM doesn’t complain like it did above) ([playground](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=c93127c5c173b945b37d18ca9bc4878f))

Here's another one

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

trait UnsafeCopy {
    type Copy<T>: Copy + Drop + ?Sized + std::fmt::Debug = [i32];
    
    fn copy<T: ?Sized>(x: &Self::Copy<T>) {
        let blah: Self::Copy<T> = *x;

        let b = Box::new(blah);
        dbg!(b);
    }
}

impl <T> UnsafeCopy for T {}

fn main() {
    let b = Box::new([1]) as Box<[i32]>;
    let copy = <Box<[i32]>>::copy::<[i32]>(&b);
}

ICE's with:

error: internal compiler error: /rustc/8fe73e80d762bc575040239fc05fb1c612873554/compiler/rustc_codegen_ssa/src/mir/operand.rs:296:17: cannot directly store unsized values

@JohnTitor
Copy link
Member

Triage: This is no longer ICE with the latest nightly, marking 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 Oct 7, 2020
@steffahn
Copy link
Member Author

steffahn commented Oct 7, 2020

Looks like this was the fix: #72788 #73905

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-associated-items Area: Associated items such as associated types and consts. A-traits Area: Trait system C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. F-associated_type_defaults `#![feature(associated_type_defaults)]` F-generic_associated_types `#![feature(generic_associated_types)]` a.k.a. GATs glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ I-unsound Issue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness requires-nightly This issue requires a nightly compiler in some way. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants