Skip to content

ICE: unboxed closure but only with mir-opt-level=0 #114665

@matthiaskrgr

Description

@matthiaskrgr

Code

from #66696
rustc -Zmir-opt-level=0 file.rs

#![feature(unboxed_closures)] fn main() { unsafe { std::mem::transmute::<usize, extern "rust-call" fn()>(5); } }

Meta

rustc --version --verbose:

rustc 1.73.0-nightly (f88a8b71c 2023-08-08) binary: rustc commit-hash: f88a8b71cebb730cbd5058c45ebcae1d4d9be377 commit-date: 2023-08-08 host: x86_64-unknown-linux-gnu release: 1.73.0-nightly LLVM version: 17.0.0 

Error output

<output> 
Backtrace

error: internal compiler error: compiler/rustc_ty_utils/src/abi.rs:355:13: argument to function with "rust-call" ABI is not a tuple thread 'rustc' panicked at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/compiler/rustc_errors/src/lib.rs:1635:9: Box<dyn Any> stack backtrace: 0: 0x7fb75b0dc41c - std::backtrace_rs::backtrace::libunwind::trace::hca136959d52e6933 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5 1: 0x7fb75b0dc41c - std::backtrace_rs::backtrace::trace_unsynchronized::h1c6a8e094542be1c at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7fb75b0dc41c - std::sys_common::backtrace::_print_fmt::h0da2398478023750 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/sys_common/backtrace.rs:67:5 3: 0x7fb75b0dc41c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h5b6a573864c0f846 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7fb75b14191c - core::fmt::rt::Argument::fmt::he6fd7e0d0105a739 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/core/src/fmt/rt.rs:138:9 5: 0x7fb75b14191c - core::fmt::write::h94f577461195b051 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/core/src/fmt/mod.rs:1094:21 6: 0x7fb75b0cefce - std::io::Write::write_fmt::hd1a9413609baf17e at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/io/mod.rs:1714:15 7: 0x7fb75b0dc204 - std::sys_common::backtrace::_print::h6209835ea4995823 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7fb75b0dc204 - std::sys_common::backtrace::print::he714f50554d615bf at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7fb75b0df2fa - std::panicking::panic_hook_with_disk_dump::{{closure}}::h3bcbb7ff457b5172 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/panicking.rs:278:22 10: 0x7fb75b0defe7 - std::panicking::panic_hook_with_disk_dump::he69919c08bd7c189 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/panicking.rs:312:9 11: 0x7fb759f41c99 - <rustc_driver_impl[a3b376697c1f9d40]::install_ice_hook::{closure#0} as core[5c8cf3808a1d57ad]::ops::function::FnOnce<(&core[5c8cf3808a1d57ad]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0} 12: 0x7fb75b0dfba0 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::ha904a5fedd1a6164 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/alloc/src/boxed.rs:2021:9 13: 0x7fb75b0dfba0 - std::panicking::rust_panic_with_hook::h2a611f1a2fc1b8fc at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/panicking.rs:733:13 14: 0x7fb75a4e3891 - std[daf38f5e158042c3]::panicking::begin_panic::<rustc_errors[7d56c13f6856642f]::ExplicitBug>::{closure#0} 15: 0x7fb75a4e3636 - std[daf38f5e158042c3]::sys_common::backtrace::__rust_end_short_backtrace::<std[daf38f5e158042c3]::panicking::begin_panic<rustc_errors[7d56c13f6856642f]::ExplicitBug>::{closure#0}, !> 16: 0x7fb75a4e3526 - std[daf38f5e158042c3]::panicking::begin_panic::<rustc_errors[7d56c13f6856642f]::ExplicitBug> 17: 0x7fb75a4291a4 - <rustc_errors[7d56c13f6856642f]::HandlerInner>::bug::<alloc[221a7a11f5e0e716]::string::String> 18: 0x7fb75a429036 - <rustc_errors[7d56c13f6856642f]::Handler>::bug::<alloc[221a7a11f5e0e716]::string::String> 19: 0x7fb75a4dd41c - rustc_middle[4e39534ad143988e]::util::bug::opt_span_bug_fmt::<rustc_span[fbb5fda749e896f2]::span_encoding::Span>::{closure#0} 20: 0x7fb75a4dc1fa - rustc_middle[4e39534ad143988e]::ty::context::tls::with_opt::<rustc_middle[4e39534ad143988e]::util::bug::opt_span_bug_fmt<rustc_span[fbb5fda749e896f2]::span_encoding::Span>::{closure#0}, !>::{closure#0} 21: 0x7fb75a4dc1c8 - rustc_middle[4e39534ad143988e]::ty::context::tls::with_context_opt::<rustc_middle[4e39534ad143988e]::ty::context::tls::with_opt<rustc_middle[4e39534ad143988e]::util::bug::opt_span_bug_fmt<rustc_span[fbb5fda749e896f2]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !> 22: 0x7fb758de4340 - rustc_middle[4e39534ad143988e]::util::bug::bug_fmt 23: 0x7fb75888db02 - rustc_ty_utils[2b480d80ea03f19d]::abi::fn_abi_new_uncached 24: 0x7fb75993fe5e - rustc_ty_utils[2b480d80ea03f19d]::abi::fn_abi_of_fn_ptr 25: 0x7fb75937515d - rustc_query_impl[e5a2310130a23b66]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e5a2310130a23b66]::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2}::{closure#0}, rustc_middle[4e39534ad143988e]::query::erase::Erased<[u8; 16usize]>> 26: 0x7fb75937511a - <rustc_query_impl[e5a2310130a23b66]::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2} as core[5c8cf3808a1d57ad]::ops::function::FnOnce<(rustc_middle[4e39534ad143988e]::ty::context::TyCtxt, rustc_middle[4e39534ad143988e]::ty::ParamEnvAnd<(rustc_middle[4e39534ad143988e]::ty::sty::Binder<rustc_middle[4e39534ad143988e]::ty::sty::FnSig>, &rustc_middle[4e39534ad143988e]::ty::list::List<rustc_middle[4e39534ad143988e]::ty::Ty>)>)>>::call_once 27: 0x7fb7594f65ba - rustc_query_system[f19bd4f68b2513a8]::query::plumbing::try_execute_query::<rustc_query_impl[e5a2310130a23b66]::DynamicConfig<rustc_query_system[f19bd4f68b2513a8]::query::caches::DefaultCache<rustc_middle[4e39534ad143988e]::ty::ParamEnvAnd<(rustc_middle[4e39534ad143988e]::ty::sty::Binder<rustc_middle[4e39534ad143988e]::ty::sty::FnSig>, &rustc_middle[4e39534ad143988e]::ty::list::List<rustc_middle[4e39534ad143988e]::ty::Ty>)>, rustc_middle[4e39534ad143988e]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[e5a2310130a23b66]::plumbing::QueryCtxt, false> 28: 0x7fb7594f6287 - rustc_query_impl[e5a2310130a23b66]::query_impl::fn_abi_of_fn_ptr::get_query_non_incr::__rust_end_short_backtrace 29: 0x7fb75826cc1f - <rustc_codegen_llvm[bf58ef99b94ec857]::context::CodegenCx as rustc_middle[4e39534ad143988e]::ty::layout::FnAbiOf>::fn_abi_of_fn_ptr 30: 0x7fb758269899 - <rustc_target[5754b8683141b86c]::abi::TyAndLayout<rustc_middle[4e39534ad143988e]::ty::Ty> as rustc_codegen_llvm[bf58ef99b94ec857]::type_of::LayoutLlvmExt>::llvm_type 31: 0x7fb758940adb - <rustc_codegen_ssa[845c4d9d94d655c1]::mir::FunctionCx<rustc_codegen_llvm[bf58ef99b94ec857]::builder::Builder>>::codegen_transmute_operand 32: 0x7fb7589236ce - <rustc_codegen_ssa[845c4d9d94d655c1]::mir::FunctionCx<rustc_codegen_llvm[bf58ef99b94ec857]::builder::Builder>>::codegen_rvalue_operand 33: 0x7fb7588f8161 - rustc_codegen_ssa[845c4d9d94d655c1]::mir::codegen_mir::<rustc_codegen_llvm[bf58ef99b94ec857]::builder::Builder> 34: 0x7fb758d79e68 - rustc_codegen_llvm[bf58ef99b94ec857]::base::compile_codegen_unit::module_codegen 35: 0x7fb758d76f60 - rustc_codegen_llvm[bf58ef99b94ec857]::base::compile_codegen_unit 36: 0x7fb758d73b05 - rustc_codegen_ssa[845c4d9d94d655c1]::base::codegen_crate::<rustc_codegen_llvm[bf58ef99b94ec857]::LlvmCodegenBackend> 37: 0x7fb758d73526 - <rustc_codegen_llvm[bf58ef99b94ec857]::LlvmCodegenBackend as rustc_codegen_ssa[845c4d9d94d655c1]::traits::backend::CodegenBackend>::codegen_crate 38: 0x7fb7591fd982 - <rustc_session[5b68303f1d45cafc]::session::Session>::time::<alloc[221a7a11f5e0e716]::boxed::Box<dyn core[5c8cf3808a1d57ad]::any::Any>, rustc_interface[bbd54b40b3118f42]::passes::start_codegen::{closure#0}> 39: 0x7fb7591fd4db - rustc_interface[bbd54b40b3118f42]::passes::start_codegen 40: 0x7fb7591f70da - <rustc_middle[4e39534ad143988e]::ty::context::GlobalCtxt>::enter::<<rustc_interface[bbd54b40b3118f42]::queries::Queries>::ongoing_codegen::{closure#0}, core[5c8cf3808a1d57ad]::result::Result<alloc[221a7a11f5e0e716]::boxed::Box<dyn core[5c8cf3808a1d57ad]::any::Any>, rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>> 41: 0x7fb7591f5f45 - rustc_span[fbb5fda749e896f2]::set_source_map::<core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>, rustc_interface[bbd54b40b3118f42]::interface::run_compiler<core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>, rustc_driver_impl[a3b376697c1f9d40]::run_compiler::{closure#1}>::{closure#0}::{closure#0}> 42: 0x7fb7591f03b0 - std[daf38f5e158042c3]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[bbd54b40b3118f42]::util::run_in_thread_pool_with_globals<rustc_interface[bbd54b40b3118f42]::interface::run_compiler<core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>, rustc_driver_impl[a3b376697c1f9d40]::run_compiler::{closure#1}>::{closure#0}, core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>> 43: 0x7fb7597b76f5 - <<std[daf38f5e158042c3]::thread::Builder>::spawn_unchecked_<rustc_interface[bbd54b40b3118f42]::util::run_in_thread_pool_with_globals<rustc_interface[bbd54b40b3118f42]::interface::run_compiler<core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>, rustc_driver_impl[a3b376697c1f9d40]::run_compiler::{closure#1}>::{closure#0}, core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5c8cf3808a1d57ad]::result::Result<(), rustc_span[fbb5fda749e896f2]::ErrorGuaranteed>>::{closure#1} as core[5c8cf3808a1d57ad]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 44: 0x7fb75b0ea225 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::he74562cf0068d98a at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/alloc/src/boxed.rs:2007:9 45: 0x7fb75b0ea225 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h499befea8267854a at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/alloc/src/boxed.rs:2007:9 46: 0x7fb75b0ea225 - std::sys::unix::thread::Thread::new::thread_start::h94d7dff6e38d6249 at /rustc/f88a8b71cebb730cbd5058c45ebcae1d4d9be377/library/std/src/sys/unix/thread.rs:108:17 47: 0x7fb756c6444b - <unknown> 48: 0x7fb756ce7e40 - <unknown> 49: 0x0 - <unknown> note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md note: please attach the file at `/home/matthias/vcs/github/glacier2/fixed/rustc-ice-2023-08-09T17:42:31.324359464Z-2419293.txt` to your bug report note: compiler flags: -Z mir-opt-level=0 query stack during panic: #0 [fn_abi_of_fn_ptr] computing call ABI of `extern "rust-call" fn()` function pointers end of query stack error: aborting due to previous error 

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.F-unboxed_closures`#![feature(unboxed_closures)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.requires-nightlyThis issue requires a nightly compiler in some way.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions