rust-lang / rust-lang/rust

ICE: `used byval ABI for unsized layout`

Open
#124,806 5 comments 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

A-hardware-interrupts C-bug F-abi_x86_interrupt F-unsized_fn_params I-ICE T-compiler
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

auto-reduced (treereduce-rust):

#![feature(abi_x86_interrupt)]
#![feature(unsized_fn_params)]
struct Test;

impl Test {
    pub extern "x86-interrupt" fn test(_a: str) {}
}

original:

struct Test;

impl Test {
    pub extern "x86-interrupt" fn test(_a: str) {

    }
}

Version information

rustc 1.80.0-nightly (25e3949aa 2024-05-06)
binary: rustc
commit-hash: 25e3949aa1b24b3f62a72c1f713830aa1d1efcd4
commit-date: 2024-05-06
host: x86_64-unknown-linux-gnu
release: 1.80.0-nightly
LLVM version: 18.1.4

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zcrate-attr=feature(abi_x86_interrupt) -Zcrate-attr=feature(unsized_fn_params) -Clink-dead-code=true --crate-type=lib

Program output

warning: struct `Test` is never constructed
 --> /tmp/icemaker_global_tempdir.cFeBgsJNprxL/rustc_testrunner_tmpdir_reporting.zx6V8PkPVkHF/mvce.rs:1:8
  |
1 | struct Test;
  |        ^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: associated function `test` is never used
 --> /tmp/icemaker_global_tempdir.cFeBgsJNprxL/rustc_testrunner_tmpdir_reporting.zx6V8PkPVkHF/mvce.rs:4:35
  |
3 | impl Test {
  | --------- associated function in this implementation
4 |     pub extern "x86-interrupt" fn test(_a: str) {}
  |                                   ^^^^

warning: `extern` fn uses type `str`, which is not FFI-safe
 --> /tmp/icemaker_global_tempdir.cFeBgsJNprxL/rustc_testrunner_tmpdir_reporting.zx6V8PkPVkHF/mvce.rs:4:44
  |
4 |     pub extern "x86-interrupt" fn test(_a: str) {}
  |                                            ^^^ not FFI-safe
  |
  = help: consider using `*const u8` and a length instead
  = note: string slices have no C equivalent
  = note: `#[warn(improper_ctypes_definitions)]` on by default

thread 'rustc' panicked at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/compiler/rustc_target/src/abi/call/mod.rs:662:9:
used byval ABI for unsized layout
stack backtrace:
   0:     0x7520ddde0b35 - std::backtrace_rs::backtrace::libunwind::trace::h0237a9d37919b3ec
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x7520ddde0b35 - std::backtrace_rs::backtrace::trace_unsynchronized::h4c8f70ef1acfdb78
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7520ddde0b35 - std::sys_common::backtrace::_print_fmt::h5b738224e75de754
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7520ddde0b35 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf9f7d71c4c529ad8
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7520dde2fcfb - core::fmt::rt::Argument::fmt::h03b0e1b7a27ddedf
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/core/src/fmt/rt.rs:165:63
   5:     0x7520dde2fcfb - core::fmt::write::h248446ba3e345fa4
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/core/src/fmt/mod.rs:1157:21
   6:     0x7520dddd58ff - std::io::Write::write_fmt::hac9e4b182ba2857c
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/io/mod.rs:1835:15
   7:     0x7520ddde090e - std::sys_common::backtrace::_print::h54e0c4dd786df1a7
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7520ddde090e - std::sys_common::backtrace::print::h18113f9dcd919587
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7520ddde3279 - std::panicking::default_hook::{{closure}}::hebc9d09f9aaaef06
  10:     0x7520ddde2fbd - std::panicking::default_hook::h2248d0b2ea6d5c7c
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/panicking.rs:298:9
  11:     0x7520da6b6c00 - std[b086d9f741814aa7]::panicking::update_hook::<alloc[9e77a608ae7548d9]::boxed::Box<rustc_driver_impl[cd242fc3f331fee7]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7520ddde3976 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hebac1653221b3ca4
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/alloc/src/boxed.rs:2036:9
  13:     0x7520ddde3976 - std::panicking::rust_panic_with_hook::h2753b01180f345fa
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/panicking.rs:799:13
  14:     0x7520ddde36eb - std::panicking::begin_panic_handler::{{closure}}::h59aac591d532bbdd
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/panicking.rs:656:13
  15:     0x7520ddde0ff9 - std::sys_common::backtrace::__rust_end_short_backtrace::h80dab8854c18c59d
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7520ddde3457 - rust_begin_unwind
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/panicking.rs:652:5
  17:     0x7520dde2c2c3 - core::panicking::panic_fmt::hb8f3ed7d1c2faf0e
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/core/src/panicking.rs:72:14
  18:     0x7520d935c141 - <rustc_target[184f43d5e0345301]::abi::call::ArgAbi<rustc_middle[dafa6f84b775271f]::ty::Ty>>::make_indirect_byval
  19:     0x7520dc7255a2 - rustc_ty_utils[d072b78cb198a2f9]::abi::fn_abi_new_uncached
  20:     0x7520dbc77faa - rustc_ty_utils[d072b78cb198a2f9]::abi::fn_abi_of_instance
  21:     0x7520dbc76877 - rustc_query_impl[bc46c06982da3aa2]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bc46c06982da3aa2]::query_impl::fn_abi_of_instance::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dafa6f84b775271f]::query::erase::Erased<[u8; 16usize]>>
  22:     0x7520dbc7480f - rustc_query_system[9914171e3cd4e2f]::query::plumbing::try_execute_query::<rustc_query_impl[bc46c06982da3aa2]::DynamicConfig<rustc_query_system[9914171e3cd4e2f]::query::caches::DefaultCache<rustc_middle[dafa6f84b775271f]::ty::ParamEnvAnd<(rustc_middle[dafa6f84b775271f]::ty::instance::Instance, &rustc_middle[dafa6f84b775271f]::ty::list::RawList<(), rustc_middle[dafa6f84b775271f]::ty::Ty>)>, rustc_middle[dafa6f84b775271f]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[bc46c06982da3aa2]::plumbing::QueryCtxt, false>
  23:     0x7520dbc74469 - rustc_query_impl[bc46c06982da3aa2]::query_impl::fn_abi_of_instance::get_query_non_incr::__rust_end_short_backtrace
  24:     0x7520d8b44005 - <rustc_codegen_llvm[b4dd3527c9c5b42e]::context::CodegenCx as rustc_codegen_ssa[d63ee8fd2fa91707]::traits::declare::PreDefineMethods>::predefine_fn
  25:     0x7520dc6d2a13 - rustc_codegen_llvm[b4dd3527c9c5b42e]::base::compile_codegen_unit::module_codegen
  26:     0x7520dc6ced16 - <rustc_codegen_llvm[b4dd3527c9c5b42e]::LlvmCodegenBackend as rustc_codegen_ssa[d63ee8fd2fa91707]::traits::backend::ExtraBackendMethods>::compile_codegen_unit
  27:     0x7520dc927fdd - rustc_codegen_ssa[d63ee8fd2fa91707]::base::codegen_crate::<rustc_codegen_llvm[b4dd3527c9c5b42e]::LlvmCodegenBackend>
  28:     0x7520dc8214cc - <rustc_codegen_llvm[b4dd3527c9c5b42e]::LlvmCodegenBackend as rustc_codegen_ssa[d63ee8fd2fa91707]::traits::backend::CodegenBackend>::codegen_crate
  29:     0x7520dc820e5f - rustc_interface[5201622961cc16ec]::passes::start_codegen
  30:     0x7520dc8204da - <rustc_interface[5201622961cc16ec]::queries::Queries>::codegen_and_build_linker
  31:     0x7520dc62522e - rustc_interface[5201622961cc16ec]::interface::run_compiler::<core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>, rustc_driver_impl[cd242fc3f331fee7]::run_compiler::{closure#0}>::{closure#1}
  32:     0x7520dc60f989 - std[b086d9f741814aa7]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[5201622961cc16ec]::util::run_in_thread_with_globals<rustc_interface[5201622961cc16ec]::util::run_in_thread_pool_with_globals<rustc_interface[5201622961cc16ec]::interface::run_compiler<core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>, rustc_driver_impl[cd242fc3f331fee7]::run_compiler::{closure#0}>::{closure#1}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>::{closure#0}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>
  33:     0x7520dc60f736 - <<std[b086d9f741814aa7]::thread::Builder>::spawn_unchecked_<rustc_interface[5201622961cc16ec]::util::run_in_thread_with_globals<rustc_interface[5201622961cc16ec]::util::run_in_thread_pool_with_globals<rustc_interface[5201622961cc16ec]::interface::run_compiler<core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>, rustc_driver_impl[cd242fc3f331fee7]::run_compiler::{closure#0}>::{closure#1}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>::{closure#0}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[9c1df39db662c9eb]::result::Result<(), rustc_span[6cb8761197abd2a5]::ErrorGuaranteed>>::{closure#2} as core[9c1df39db662c9eb]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  34:     0x7520ddded7bb - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::ha0c4bf88c896ff7b
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/alloc/src/boxed.rs:2022:9
  35:     0x7520ddded7bb - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had08bec978f53e77
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/alloc/src/boxed.rs:2022:9
  36:     0x7520ddded7bb - std::sys::pal::unix::thread::Thread::new::thread_start::haa511dd1bba6b653
                               at /rustc/25e3949aa1b24b3f62a72c1f713830aa1d1efcd4/library/std/src/sys/pal/unix/thread.rs:108:17
  37:     0x7520ddb8c55a - <unknown>
  38:     0x7520ddc09a3c - <unknown>
  39:                0x0 - <unknown>

error: 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: please make sure that you have updated to the latest nightly

note: rustc 1.80.0-nightly (25e3949aa 2024-05-06) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z crate-attr=feature(abi_x86_interrupt) -Z crate-attr=feature(unsized_fn_params) -C link-dead-code=true --crate-type lib -Z dump-mir-dir=dir

query stack during panic:
#0 [fn_abi_of_instance] computing call ABI of `<impl at /tmp/icemaker_global_tempdir.cFeBgsJNprxL/rustc_testrunner_tmpdir_reporting.zx6V8PkPVkHF/mvce.rs:3:1: 3:10>::test`
end of query stack
warning: 3 warnings emitted


@rustbot label +F-abi_x86_interrupt +F-unsized_fn_params

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.