lucet icon indicating copy to clipboard operation
lucet copied to clipboard

[lucetc] thread 'main' panicked in lucetc/src/module.rs:326

Open pventuzelo opened this issue 4 years ago • 1 comments

Environment

Questions Answers
Related Binary lucetc
Commit commit 2c2b035415703499c8d1e03ac54c12deb694fe45

Vulnerability/Issue

Thread 'main' panicked in lucetc/src/module.rs:326 due to undeclared wasm table in the module

Steps to reproduce the behavior

Additional Informations

Crash

thread 'main' panicked at 'creation of elements for undeclared table! only table 0 is implicitly declared', lucetc/src/module.rs:326:21

Crash (RUST_BACKTRACE=1)

thread 'main' panicked at 'creation of elements for undeclared table! only table 0 is implicitly declared', lucetc/src/module.rs:326:21
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::begin_panic
   8: <lucetc::module::ModuleInfo as cranelift_wasm::environ::spec::ModuleEnvironment>::declare_table_elements
   9: cranelift_wasm::sections_translator::parse_element_section
  10: cranelift_wasm::module_translator::translate_module
  11: lucetc::compiler::Compiler::new
  12: lucetc::Lucetc::shared_object_file
  13: lucetc::main
  14: std::rt::lang_start::{{closure}}
  15: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:49
  16: std::panicking::try::do_call
             at src/libstd/panicking.rs:296
  17: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:82
  18: std::panicking::try
             at src/libstd/panicking.rs:275
  19: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  20: std::rt::lang_start_internal
             at src/libstd/rt.rs:48
  21: main
  22: __libc_start_main
  23: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Crash (RUST_BACKTRACE=full)

stack backtrace:
   0:     0x5646341698db - backtrace::backtrace::libunwind::trace::h9aefeba8a047a6fe
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1:     0x5646341698db - backtrace::backtrace::trace_unsynchronized::hdf2f93b3a2c1de24
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2:     0x5646341698db - std::sys_common::backtrace::_print::hd965b6bee154e2c5
                               at src/libstd/sys_common/backtrace.rs:47
   3:     0x5646341698db - std::sys_common::backtrace::print::h1711ea6b4387aaa6
                               at src/libstd/sys_common/backtrace.rs:36
   4:     0x5646341698db - std::panicking::default_hook::{{closure}}::h0b61452e607a4bdf
                               at src/libstd/panicking.rs:200
   5:     0x5646341695b7 - std::panicking::default_hook::h0a165fe2804b5780
                               at src/libstd/panicking.rs:214
   6:     0x56463416a050 - std::panicking::rust_panic_with_hook::ha3295d53a35861e3
                               at src/libstd/panicking.rs:477
   7:     0x564633c798c5 - std::panicking::begin_panic::h1b36c41bf5110c2b
   8:     0x564633c77fc2 - <lucetc::module::ModuleInfo as cranelift_wasm::environ::spec::ModuleEnvironment>::declare_table_elements::h54eb50e51087e108
   9:     0x564633ec032e - cranelift_wasm::sections_translator::parse_element_section::h5327c2d7842f2fd1
  10:     0x564633ebbec5 - cranelift_wasm::module_translator::translate_module::h63087b4361b145a6
  11:     0x564633c981b3 - lucetc::compiler::Compiler::new::hee9cc55e9e22ebe4
  12:     0x564633b88e5b - lucetc::Lucetc::shared_object_file::he485a969b90d920f
  13:     0x564633b7add8 - lucetc::main::h7b276514f39cbe87
  14:     0x564633b8e6e3 - std::rt::lang_start::{{closure}}::h20df7461734dbd8d
  15:     0x564634169a53 - std::rt::lang_start_internal::{{closure}}::ha6cdc0674c227baf
                               at src/libstd/rt.rs:49
  16:     0x564634169a53 - std::panicking::try::do_call::hcfcd808f74618614
                               at src/libstd/panicking.rs:296
  17:     0x56463417ab5a - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:82
  18:     0x56463416a61d - std::panicking::try::h28299215a9cbdc2e
                               at src/libstd/panicking.rs:275
  19:     0x56463416a61d - std::panic::catch_unwind::h6d2adbec69dbd2ec
                               at src/libstd/panic.rs:394
  20:     0x56463416a61d - std::rt::lang_start_internal::ha819bd148e81f2bd
                               at src/libstd/rt.rs:48
  21:     0x564633b7b2c2 - main
  22:     0x7fb5406bfb97 - __libc_start_main
  23:     0x564633b7763a - _start
  24:                0x0 - <unknown>

Feedback

In lucetc/src/module.rs:326, there is a call to panic!. Calling LucetcError make maybe more sense based on global lucetc quality code.

BTW, this call to panic is not the only one in lucetc/src/module.rs

pventuzelo avatar Jul 15 '19 08:07 pventuzelo

Thanks!

The code of that specific case is

(module
 (type $0 (func (result i32)))
 (type $1 (func (param i32) (result i32)))
 (import "spectest" "table" (table $timport$0 10 20 funcref))
 (elem (i32.const 1) $1 $2)
 (export "call" (func $0))
 (func $0 (; 0 ;) (type $1) (param $0 i32) (result i32)
  (call_indirect (type $0)
   (local.get $0)
  )
 )
 (func $1 (; 1 ;) (type $0) (result i32)
  (i32.const 11)
 )
 (func $2 (; 2 ;) (type $0) (result i32)
  (i32.const 22)
 )
)

Properly handling that one requires a minor change to cranelift.

jedisct1 avatar Jul 15 '19 13:07 jedisct1