Skip to content

DataDecl::set_align panics on align of 0 #95

@jyn514

Description

@jyn514

Found this through a bug in my own code, I don't have stand-alone code to go with it right now since this came from a dev branch that's not public.

It's probably an error to pass 0 to set_align anyway, but it should return an error result instead of panicking.

Backtrace
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `Some(1)`,
 right: `Some(0)`', /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/faerie-0.11.0/src/artifact/decl.rs:453:5
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:200
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:214
   6: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:477
   7: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:384
   8: std::panicking::begin_panic_fmt
             at src/libstd/panicking.rs:339
   9: faerie::artifact::decl::DataDecl::set_align
             at /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/faerie-0.11.0/src/artifact/decl.rs:157
  10: faerie::artifact::decl::DataDecl::with_align
             at /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/faerie-0.11.0/src/artifact/decl.rs:151
  11: cranelift_faerie::backend::translate_data_linkage
             at /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-faerie-0.42.0/src/backend.rs:352
  12: <cranelift_faerie::backend::FaerieBackend as cranelift_module::backend::Backend>::declare_data
             at /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-faerie-0.42.0/src/backend.rs:134
  13: cranelift_module::module::Module<B>::declare_data
             at /home/joshua/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-module-0.42.0/src/module.rs:477
  14: rcc::ir::LLVMCompiler::store_static
             at src/ir.rs:913
  15: rcc::ir::compile
             at src/ir.rs:85
  16: rcc::compile
             at src/lib.rs:72
  17: rcc::real_main
             at src/main.rs:74
  18: rcc::main
             at src/main.rs:130
  19: std::rt::lang_start::{{closure}}
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  20: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:49
  21: std::panicking::try::do_call
             at src/libstd/panicking.rs:296
  22: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:82
  23: std::panicking::try
             at src/libstd/panicking.rs:275
  24: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  25: std::rt::lang_start_internal
             at src/libstd/rt.rs:48
  26: std::rt::lang_start
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  27: main
  28: __libc_start_main
  29: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions