Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

buggy bswap implementation seems to assume unsigned arguments #169

Closed
FractalFir opened this issue Dec 2, 2024 · 0 comments · Fixed by #174
Closed

buggy bswap implementation seems to assume unsigned arguments #169

FractalFir opened this issue Dec 2, 2024 · 0 comments · Fixed by #174
Labels
bug Something isn't working rustlantis

Comments

@FractalFir
Copy link
Contributor

FractalFir commented Dec 2, 2024

This snippet of Rust code:

#![feature(core_intrinsics)]
#![no_std]
use spirv_std::spirv;
#[spirv(compute(threads(1)))]
pub fn main() {
    core::intrinsics::bswap(-1_i32);
}

causes a panic in rust-gpu:

thread 'rustc' panicked at crates/rustc_codegen_spirv/src/builder/builder_methods.rs:1243:9:
Expected types to be equal:
i32
==
u32
stack backtrace:
   0:     0x7fc78dc61935 - std::backtrace_rs::backtrace::libunwind::trace::h19be1b2eef092323
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x7fc78dc61935 - std::backtrace_rs::backtrace::trace_unsynchronized::h5fb87216a898ae13
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fc78dc61935 - std::sys_common::backtrace::_print_fmt::hb7c11d9dfb93defb
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7fc78dc61935 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb67a26e8fbf63961
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7fc78dcb0a6b - core::fmt::rt::Argument::fmt::hf262f5ae63b7280d
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/core/src/fmt/rt.rs:165:63
   5:     0x7fc78dcb0a6b - core::fmt::write::hf662053177767752
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/core/src/fmt/mod.rs:1157:21
   6:     0x7fc78dc5653f - std::io::Write::write_fmt::hbe0746a38afa3ed8
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/io/mod.rs:1832:15
   7:     0x7fc78dc6170e - std::sys_common::backtrace::_print::h449d3837fdc38e9e
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7fc78dc6170e - std::sys_common::backtrace::print::hbaf62f5795d4cfbf
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7fc78dc64079 - std::panicking::default_hook::{{closure}}::hd3baa576f047dd31
  10:     0x7fc78dc63dbd - std::panicking::default_hook::h629aac334d35fabe
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/panicking.rs:298:9
  11:     0x7fc78a652cfc - std[db34fec1d5020528]::panicking::update_hook::<alloc[d9f9aafa851aff33]::boxed::Box<rustc_driver_impl[5c10b38f6ed04dbe]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7fc78a652cfc - std[db34fec1d5020528]::panicking::update_hook::<alloc[d9f9aafa851aff33]::boxed::Box<rustc_driver_impl[5c10b38f6ed04dbe]::install_ice_hook::{closure#0}>>::{closure#0}
  13:     0x7fc78dc64776 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h1a245891e3b97a26
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/alloc/src/boxed.rs:2036:9
  14:     0x7fc78dc64776 - std::panicking::rust_panic_with_hook::h9a48efc72c1f19d6
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/panicking.rs:799:13
  15:     0x7fc78dc64524 - std::panicking::begin_panic_handler::{{closure}}::h7ba519a7ff46ba95
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/panicking.rs:664:13
  16:     0x7fc78dc61df9 - std::sys_common::backtrace::__rust_end_short_backtrace::h542fa69f276529d5
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys_common/backtrace.rs:171:18
  17:     0x7fc78dc64257 - rust_begin_unwind
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/panicking.rs:652:5
  18:     0x7fc78dcacf33 - core::panicking::panic_fmt::h7eb870b4cabf95b0
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/core/src/panicking.rs:72:14
  19:     0x7fc77c19cc68 - rustc_codegen_spirv::builder::builder_methods::<impl rustc_codegen_ssa::traits::builder::BuilderMethods for rustc_codegen_spirv::builder::Builder>::and::h3de7ceafa7d09fef
                               at /home/michal/rust-gpu/crates/rustc_codegen_spirv/src/builder/builder_methods.rs:1243:9
  20:     0x7fc77c1b9eef - rustc_codegen_spirv::builder::intrinsics::<impl rustc_codegen_ssa::traits::intrinsic::IntrinsicCallMethods for rustc_codegen_spirv::builder::Builder>::codegen_intrinsic_call::he18382318c092a0d
                               at /home/michal/rust-gpu/crates/rustc_codegen_spirv/src/builder/intrinsics.rs:283:36
  21:     0x7fc77c314eb9 - rustc_codegen_ssa::mir::intrinsic::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::codegen_intrinsic_call::hdaedf831c17413ba
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs:508:24
  22:     0x7fc77c2fa3e7 - rustc_codegen_ssa::mir::block::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::codegen_call_terminator::hd798a22cb753efca
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mir/block.rs:956:23
  23:     0x7fc77c2f835e - rustc_codegen_ssa::mir::block::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::codegen_terminator::h212fef884ce12aa2
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mir/block.rs:1372:18
  24:     0x7fc77c2f56b7 - rustc_codegen_ssa::mir::block::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::codegen_block::h2b1f27c23923db79
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mir/block.rs:1259:32
  25:     0x7fc77c2f20f6 - rustc_codegen_ssa::mir::codegen_mir::h0a3c6b6a40bb9cf3
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mir/mod.rs:270:13
  26:     0x7fc77c097ef3 - rustc_codegen_ssa::base::codegen_instance::h0aa41afa02875a8d
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/base.rs:386:5
  27:     0x7fc77bf20e8d - <rustc_middle::mir::mono::MonoItem as rustc_codegen_ssa::mono_item::MonoItemExt>::define::h7866994c40a1de5e
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/mono_item.rs:104:17
  28:     0x7fc77c082b7e - <rustc_codegen_spirv::SpirvCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::compile_codegen_unit::{{closure}}::hb88818f6b57b290e
                               at /home/michal/rust-gpu/crates/rustc_codegen_spirv/src/lib.rs:427:17
  29:     0x7fc77c07379d - <rustc_codegen_spirv::SpirvCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::compile_codegen_unit::hbed45f46a5f82cb3
                               at /home/michal/rust-gpu/crates/rustc_codegen_spirv/src/lib.rs:439:36
  30:     0x7fc77c096432 - rustc_codegen_ssa::base::codegen_crate::hc5fcfd2f6ef47857
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/compiler/rustc_codegen_ssa/src/base.rs:746:34
  31:     0x7fc77c07238a - <rustc_codegen_spirv::SpirvCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate::h9e9308d203a90d6d
                               at /home/michal/rust-gpu/crates/rustc_codegen_spirv/src/lib.rs:225:18
  32:     0x7fc78c8fc8df - rustc_interface[b67c563168272ea]::passes::start_codegen
  33:     0x7fc78c8fbf5a - <rustc_interface[b67c563168272ea]::queries::Queries>::codegen_and_build_linker
  34:     0x7fc78c617136 - rustc_interface[b67c563168272ea]::interface::run_compiler::<core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>, rustc_driver_impl[5c10b38f6ed04dbe]::run_compiler::{closure#0}>::{closure#1}
  35:     0x7fc78c5fd509 - std[db34fec1d5020528]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[b67c563168272ea]::util::run_in_thread_with_globals<rustc_interface[b67c563168272ea]::util::run_in_thread_pool_with_globals<rustc_interface[b67c563168272ea]::interface::run_compiler<core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>, rustc_driver_impl[5c10b38f6ed04dbe]::run_compiler::{closure#0}>::{closure#1}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>::{closure#0}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>
  36:     0x7fc78c5fd2ba - <<std[db34fec1d5020528]::thread::Builder>::spawn_unchecked_<rustc_interface[b67c563168272ea]::util::run_in_thread_with_globals<rustc_interface[b67c563168272ea]::util::run_in_thread_pool_with_globals<rustc_interface[b67c563168272ea]::interface::run_compiler<core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>, rustc_driver_impl[5c10b38f6ed04dbe]::run_compiler::{closure#0}>::{closure#1}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>::{closure#0}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[888f6a0b8de5a452]::result::Result<(), rustc_span[ff1220fe343bc5a6]::ErrorGuaranteed>>::{closure#2} as core[888f6a0b8de5a452]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  37:     0x7fc78dc6e60b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::ha4af6e05c1d0cf88
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/alloc/src/boxed.rs:2022:9
  38:     0x7fc78dc6e60b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h102b55c00467134a
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/alloc/src/boxed.rs:2022:9
  39:     0x7fc78dc6e60b - std::sys::pal::unix::thread::Thread::new::thread_start::hde2208f61633c92b
                               at /rustc/244da22fabd9fa677bbd0ac601a88e5ca6917526/library/std/src/sys/pal/unix/thread.rs:108:17
  40:     0x7fc7874a66d7 - start_thread
  41:     0x7fc78752a60c - __clone3
  42:                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: please attach the file at `/home/michal/rust-gpu/rustc-ice-2024-12-02T22_24_58-50766.txt` to your bug report

note: compiler flags: --crate-type lib --crate-type dylib -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C incremental=[REDACTED] -C strip=debuginfo -Z unstable-options -Z codegen-backend=/home/michal/rust-gpu/target/debug/deps/librustc_codegen_spirv.so -Z binary-dep-depinfo -C symbol-mangling-version=v0 -Z crate-attr=feature(register_tool) -Z crate-attr=register_tool(rust_gpu) -C overflow-checks=off -C debug-assertions=off -Z inline-mir=off -Z mir-enable-passes=-GVN

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack

error: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-gpu/rust-gpu/issues/new

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/home/michal/rust-gpu/rustc-ice-2024-12-02T22_24_58-50766.txt` to your bug report

note: compiler flags: --crate-type lib --crate-type dylib -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C incremental=[REDACTED] -C strip=debuginfo -Z unstable-options -Z codegen-backend=/home/michal/rust-gpu/target/debug/deps/librustc_codegen_spirv.so -Z binary-dep-depinfo -C symbol-mangling-version=v0 -Z crate-attr=feature(register_tool) -Z crate-attr=register_tool(rust_gpu) -C overflow-checks=off -C debug-assertions=off -Z inline-mir=off -Z mir-enable-passes=-GVN

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
note: `rust-gpu` version `0.9.0`

This seems to be caused by implementation of bswap assuming its argument is unsigned, which is not correct.

let arg = args[0].immediate();

BTW: This bug is the very first boon of fuzzing rustgpu with rustlants!

@FractalFir FractalFir added the bug Something isn't working label Dec 2, 2024
LegNeato added a commit to LegNeato/rust-gpu that referenced this issue Dec 9, 2024
LegNeato added a commit to LegNeato/rust-gpu that referenced this issue Dec 9, 2024
LegNeato added a commit to LegNeato/rust-gpu that referenced this issue Dec 9, 2024
@LegNeato LegNeato changed the title buggy bswap implementation seems to assume unsinged arguments buggy bswap implementation seems to assume unsigned arguments Dec 10, 2024
LegNeato added a commit that referenced this issue Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working rustlantis
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants