Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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. When possible, use a F-* label instead.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions