Closed
Description
Caused by an issue in rustc itself, found here https://github.com/rust-lang/rust/pull/120354/files#r1469154220 from what I can tell this is only testable via MIRI however, so I opened the issue for this here.
trait Id {
type Assoc: ?Sized;
}
impl<T: ?Sized> Id for T {
type Assoc = T;
}
#[repr(transparent)]
struct Foo<T: ?Sized> {
field: <T as Id>::Assoc,
}
fn main() {
let x = unsafe { std::mem::transmute::<fn(&str), fn(&Foo<str>)>(|_| ()) };
let foo: &Foo<str> = unsafe { &*("uwu" as *const str as *const Foo<str>) };
x(foo);
}
results in an ICE
thread 'rustc' panicked at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/compiler/rustc_const_eval/src/interpret/terminator.rs:377:17:
there should be no more 'maybe has that metadata' types during interpretation
stack backtrace:
0: 0x7f3ccb869706 - std::backtrace_rs::backtrace::libunwind::trace::hab3572c31eb20106
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
1: 0x7f3ccb869706 - std::backtrace_rs::backtrace::trace_unsynchronized::h60fe86980a447e1f
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7f3ccb869706 - std::sys_common::backtrace::_print_fmt::h94f8d95d56c8f54a
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys_common/backtrace.rs:68:5
3: 0x7f3ccb869706 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hcc8bd1ee8b27b1a7
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys_common/backtrace.rs:44:22
4: 0x7f3ccb8bc0a0 - core::fmt::rt::Argument::fmt::h53aa1e305ab9c913
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/core/src/fmt/rt.rs:142:9
5: 0x7f3ccb8bc0a0 - core::fmt::write::h510b9470c0914af3
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/core/src/fmt/mod.rs:1120:17
6: 0x7f3ccb85d03f - std::io::Write::write_fmt::h324f538b1fa72cf5
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/io/mod.rs:1810:15
7: 0x7f3ccb8694e4 - std::sys_common::backtrace::_print::h87616c284c3fd658
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys_common/backtrace.rs:47:5
8: 0x7f3ccb8694e4 - std::sys_common::backtrace::print::h1a5bdc383314a847
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys_common/backtrace.rs:34:9
9: 0x7f3ccb86c277 - std::panicking::default_hook::{{closure}}::h154ee088de97fd79
10: 0x7f3ccb86bfd9 - std::panicking::default_hook::h255191adadb3bbd3
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/panicking.rs:292:9
11: 0x7f3cce62a9cc - std[9b9743348aa3637e]::panicking::update_hook::<alloc[bafad8be7e602ddc]::boxed::Box<rustc_driver_impl[15253732b01127ee]::install_ice_hook::{closure#0}>>::{closure#0}
12: 0x7f3ccb86c9c6 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::he0826d83a3d5350a
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/alloc/src/boxed.rs:2029:9
13: 0x7f3ccb86c9c6 - std::panicking::rust_panic_with_hook::h48fa132e308b8b90
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/panicking.rs:785:13
14: 0x7f3ccb86c6d9 - std::panicking::begin_panic_handler::{{closure}}::h25d6c93d3d1459db
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/panicking.rs:651:13
15: 0x7f3ccb869c06 - std::sys_common::backtrace::__rust_end_short_backtrace::h34a894d5da7b6896
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys_common/backtrace.rs:171:18
16: 0x7f3ccb86c464 - rust_begin_unwind
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/panicking.rs:647:5
17: 0x7f3ccb8b87a5 - core::panicking::panic_fmt::he5ea86dee9f7da0f
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/core/src/panicking.rs:72:14
18: 0x55e0819bae18 - <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine>>::layout_compat::{closure#3}
19: 0x55e0819ea95d - <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine>>::check_argument_compat
20: 0x55e0819988f9 - <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine>>::pass_argument::<core[2c84ace8ac8a7133]::iter::adapters::filter::Filter<core[2c84ace8ac8a7133]::iter::adapters::zip::Zip<core[2c84ace8ac8a7133]::slice::iter::Iter<rustc_const_eval[2871bae7c83aa647]::interpret::terminator::FnArg<miri[3c98aef04cce8b4]::machine::Provenance>>, core[2c84ace8ac8a7133]::slice::iter::Iter<rustc_target[22ed814efa7eb6fe]::abi::call::ArgAbi<rustc_middle[16339a7d2af1bee1]::ty::Ty>>>, <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine>>::eval_fn_call::{closure#2}>>
21: 0x55e0819e8a63 - <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine>>::eval_fn_call
22: 0x55e081a542e5 - <rustc_const_eval[2871bae7c83aa647]::interpret::eval_context::InterpCx<miri[3c98aef04cce8b4]::machine::MiriMachine> as miri[3c98aef04cce8b4]::concurrency::thread::EvalContextExt>::run_threads
23: 0x55e081a625c4 - miri[3c98aef04cce8b4]::eval::eval_entry
24: 0x55e08189fff3 - <miri[442eb2054b97ae67]::MiriCompilerCalls as rustc_driver_impl[15253732b01127ee]::Callbacks>::after_analysis
25: 0x7f3cd0614a6c - rustc_interface[2c240f1a557fc091]::interface::run_compiler::<core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>, rustc_driver_impl[15253732b01127ee]::run_compiler::{closure#0}>::{closure#0}
26: 0x7f3cd024a706 - std[9b9743348aa3637e]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[2c240f1a557fc091]::util::run_in_thread_with_globals<rustc_interface[2c240f1a557fc091]::util::run_in_thread_pool_with_globals<rustc_interface[2c240f1a557fc091]::interface::run_compiler<core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>, rustc_driver_impl[15253732b01127ee]::run_compiler::{closure#0}>::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>
27: 0x7f3cd024a533 - <<std[9b9743348aa3637e]::thread::Builder>::spawn_unchecked_<rustc_interface[2c240f1a557fc091]::util::run_in_thread_with_globals<rustc_interface[2c240f1a557fc091]::util::run_in_thread_pool_with_globals<rustc_interface[2c240f1a557fc091]::interface::run_compiler<core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>, rustc_driver_impl[15253732b01127ee]::run_compiler::{closure#0}>::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2c84ace8ac8a7133]::result::Result<(), rustc_span[f446feb06f8d21a5]::ErrorGuaranteed>>::{closure#1} as core[2c84ace8ac8a7133]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
28: 0x7f3ccb875fb5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h81eeb26d82351c2e
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/alloc/src/boxed.rs:2015:9
29: 0x7f3ccb875fb5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::ha4fb1b693e599c2e
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/alloc/src/boxed.rs:2015:9
30: 0x7f3ccb875fb5 - std::sys::pal::unix::thread::Thread::new::thread_start::hbbc84e063a1942c6
at /rustc/635124704849eeead4e3a7bb6e663c5351571d93/library/std/src/sys/pal/unix/thread.rs:108:17
31: 0x7f3ccb76b609 - start_thread
32: 0x7f3ccb541353 - clone
33: 0x0 - <unknown>
error: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/miri/issues/new
note: please attach the file at `/playground/rustc-ice-2024-01-29T07_25_46-13.txt` to your bug report
note: compiler flags: --crate-type bin -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2 -Z miri-disable-isolation
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
Miri caused an ICE during evaluation. Here's the interpreter backtrace at the time of the panic:
note: the place in the program where the ICE was triggered
--> /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
|
250 | extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: inside `<{closure@src/main.rs:16:69: 16:72} as std::ops::FnOnce<(&str,)>>::call_once - shim` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5: 250:71
note: inside `main`
--> src/main.rs:18:5
|
18 | x(foo);
| ^^^^^^
= note: inside `<fn() as std::ops::FnOnce<()>>::call_once - shim(fn())` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5: 250:71
= note: inside `std::sys_common::backtrace::__rust_begin_short_backtrace::<fn(), ()>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:155:18: 155:21
= note: inside closure at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:166:18: 166:82
= note: inside `std::ops::function::impls::<impl std::ops::FnOnce<()> for &dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe>::call_once` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:284:13: 284:31
= note: inside `std::panicking::r#try::do_call::<&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:554:40: 554:43
= note: inside `std::panicking::r#try::<i32, &dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:518:19: 518:81
= note: inside `std::panic::catch_unwind::<&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:142:14: 142:33
= note: inside closure at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:148:48: 148:73
= note: inside `std::panicking::r#try::do_call::<{closure@std::rt::lang_start_internal::{closure#2}}, isize>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:554:40: 554:43
= note: inside `std::panicking::r#try::<isize, {closure@std::rt::lang_start_internal::{closure#2}}>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:518:19: 518:81
= note: inside `std::panic::catch_unwind::<{closure@std::rt::lang_start_internal::{closure#2}}, isize>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:142:14: 142:33
= note: inside `std::rt::lang_start_internal` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:148:20: 148:98
= note: inside `std::rt::lang_start::<()>` at /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:165:17: 170:6
Metadata
Metadata
Assignees
Labels
No labels