Open matthiaskrgr opened 1 year ago
Regression in nightly-2023-06-22 started with https://github.com/rust-lang/rust/pull/112853 :shrug:
This doesn't need lazy type aliases to reproduce:
rustc -Zprint-mono-items=eager
impl Trait for <Ty as Owner>::Struct {}
trait Trait {
fn test(&self) {}
}
enum Ty {}
trait Owner { type Struct: ?Sized; }
impl Owner for Ty {
type Struct = dyn Trait + Send;
}
fn main() {}
I'd like to clarify, we should definitely keep the label F-lazy_type_alias since this code will regress if / once we make lazy type aliases the default (in a new edition). However, my finding demonstrates that the bug is preexisting. The faulty code path doesn't handle alias types (ty::AliasTy
) correctly (ty::Projection
in the case of associated types and ty::Weak
in the case of lazy type aliases).
Code
rustc -Zprint-mono-items=eager file.rs
Meta
rustc --version --verbose
:Error output
Backtrace
``` error: internal compiler error: compiler/rustc_mir_transform/src/shim.rs:85:13: InstanceDef::Virtual (Virtual(DefId(0:5 ~ treereduce[f361]::Trait::test), 3)) is for direct calls only thread 'rustc' panicked at 'Box', /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/compiler/rustc_errors/src/lib.rs:1645:9
stack backtrace:
0: 0x7f6500162fc1 - std::backtrace_rs::backtrace::libunwind::trace::hdb93c75af49465f7
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7f6500162fc1 - std::backtrace_rs::backtrace::trace_unsynchronized::h173553974892ea20
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7f6500162fc1 - std::sys_common::backtrace::_print_fmt::h4a408d1535f12ce7
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/sys_common/backtrace.rs:65:5
3: 0x7f6500162fc1 - ::fmt::h80e339e782587177
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/sys_common/backtrace.rs:44:22
4: 0x7f65001c949c - core::fmt::rt::Argument::fmt::h48c77cd529068ea0
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/core/src/fmt/rt.rs:138:9
5: 0x7f65001c949c - core::fmt::write::hd5614e3697ba0662
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/core/src/fmt/mod.rs:1094:21
6: 0x7f65001555ce - std::io::Write::write_fmt::h18665f5cd588a024
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/io/mod.rs:1714:15
7: 0x7f6500162dd5 - std::sys_common::backtrace::_print::h5415b7879e858e5a
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/sys_common/backtrace.rs:47:5
8: 0x7f6500162dd5 - std::sys_common::backtrace::print::hc72a2f092cb4fce1
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/sys_common/backtrace.rs:34:9
9: 0x7f6500165e2a - std::panicking::panic_hook_with_disk_dump::{{closure}}::h11ce7931c3e3ad73
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/panicking.rs:278:22
10: 0x7f6500165ac3 - std::panicking::panic_hook_with_disk_dump::h32f84721a84edaa9
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/panicking.rs:312:9
11: 0x7f650340ef39 - rustc_driver_impl[2d064f46b3c8d597]::install_ice_hook::{closure#0}
12: 0x7f65001666d0 - as core::ops::function::Fn>::call::h93009440feeb02eb
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/alloc/src/boxed.rs:2021:9
13: 0x7f65001666d0 - std::panicking::rust_panic_with_hook::hc8970ff82cfba6ba
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/panicking.rs:733:13
14: 0x7f65039ce591 - std[43ea1a6b17be2c75]::panicking::begin_panic::::{closure#0}
15: 0x7f65039ce396 - std[43ea1a6b17be2c75]::sys_common::backtrace::__rust_end_short_backtrace::::{closure#0}, !>
16: 0x7f650397c646 - std[43ea1a6b17be2c75]::panicking::begin_panic::
17: 0x7f65039dd7a4 - ::bug::
18: 0x7f65039dd636 - ::bug::
19: 0x7f65039b97cc - rustc_middle[dfa6d6dd80f6535c]::util::bug::opt_span_bug_fmt::::{closure#0}
20: 0x7f65039b85ca - rustc_middle[dfa6d6dd80f6535c]::ty::context::tls::with_opt::::{closure#0}, !>::{closure#0}
21: 0x7f65039b8598 - rustc_middle[dfa6d6dd80f6535c]::ty::context::tls::with_context_opt::::{closure#0}, !>::{closure#0}, !>
22: 0x7f6501dd15e0 - rustc_middle[dfa6d6dd80f6535c]::util::bug::bug_fmt
23: 0x7f65027a3dbd - rustc_mir_transform[ef19b90d23ceef0f]::shim::make_shim
24: 0x7f650206388f - rustc_query_impl[9b7bf9fcc2c74b]::plumbing::__rust_begin_short_backtrace::>
25: 0x7f650206384c - >::call_once
26: 0x7f6502065e70 - rustc_query_system[d8ac3be064c6a648]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[9b7bf9fcc2c74b]::plumbing::QueryCtxt, false>
27: 0x7f6502065b83 - rustc_query_impl[9b7bf9fcc2c74b]::query_impl::mir_shims::get_query_non_incr::__rust_end_short_backtrace
28: 0x7f65018f7afc - ::instance_mir
29: 0x7f6501478c46 - rustc_monomorphize[1ccdbbc078c7102a]::collector::collect_used_items
30: 0x7f6501475615 - rustc_monomorphize[1ccdbbc078c7102a]::collector::collect_items_rec
31: 0x7f65029c7d60 - rustc_data_structures[2f54d9eed481ad54]::sync::par_for_each_in::, rustc_monomorphize[1ccdbbc078c7102a]::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
32: 0x7f65029c7659 - ::time::<(), rustc_monomorphize[1ccdbbc078c7102a]::collector::collect_crate_mono_items::{closure#1}>
33: 0x7f65029c72b8 - rustc_monomorphize[1ccdbbc078c7102a]::collector::collect_crate_mono_items
34: 0x7f65029c5897 - rustc_monomorphize[1ccdbbc078c7102a]::partitioning::collect_and_partition_mono_items
35: 0x7f6502a12c39 - rustc_query_impl[9b7bf9fcc2c74b]::plumbing::__rust_begin_short_backtrace::>
36: 0x7f6502a12c0b - >::call_once
37: 0x7f6502af881c - rustc_query_system[d8ac3be064c6a648]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[9b7bf9fcc2c74b]::plumbing::QueryCtxt, false>
38: 0x7f6502d85d48 - rustc_query_impl[9b7bf9fcc2c74b]::query_impl::collect_and_partition_mono_items::get_query_non_incr::__rust_end_short_backtrace
39: 0x7f6502458c26 - rustc_codegen_ssa[7aa2eca03bf336cb]::base::codegen_crate::
40: 0x7f6502458a0b - ::codegen_crate
41: 0x7f6502668762 - ::time::, rustc_interface[e815501e41232ae3]::passes::start_codegen::{closure#0}>
42: 0x7f65026682db - rustc_interface[e815501e41232ae3]::passes::start_codegen
43: 0x7f6502662f6a - ::enter::<::ongoing_codegen::{closure#0}, core[b78222062286ce0]::result::Result, rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>
44: 0x7f6502661fa3 - ::enter::, rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>
45: 0x7f650265aff8 - std[43ea1a6b17be2c75]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[2d064f46b3c8d597]::run_compiler::{closure#1}>::{closure#0}, core[b78222062286ce0]::result::Result<(), rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b78222062286ce0]::result::Result<(), rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>
46: 0x7f650265a77e - <::spawn_unchecked_, rustc_driver_impl[2d064f46b3c8d597]::run_compiler::{closure#1}>::{closure#0}, core[b78222062286ce0]::result::Result<(), rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b78222062286ce0]::result::Result<(), rustc_span[5d15a33e9175a7b0]::ErrorGuaranteed>>::{closure#1} as core[b78222062286ce0]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
47: 0x7f6500170dc5 - as core::ops::function::FnOnce>::call_once::h4f82faf6b02ba832
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/alloc/src/boxed.rs:2007:9
48: 0x7f6500170dc5 - as core::ops::function::FnOnce>::call_once::hf73d60080ca8008e
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/alloc/src/boxed.rs:2007:9
49: 0x7f6500170dc5 - std::sys::unix::thread::Thread::new::thread_start::hb438279e2a921916
at /rustc/04abc370b9f3855b28172b65a7f7d5a433f41412/library/std/src/sys/unix/thread.rs:108:17
50: 0x7f64ffebf44b -
51: 0x7f64fff42e40 -
52: 0x0 -
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: please attach the file at `/tmp/im/rustc-ice-2023-07-29T04:50:29.860118737Z-3547485.txt` to your bug report
note: compiler flags: -Z print-mono-items=eager
query stack during panic:
#0 [mir_shims] generating MIR shim for `Trait::test`
#1 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: aborting due to previous error; 1 warning emitted
```