DelSkayn / rquickjs

High level bindings to the quickjs javascript engine
MIT License
431 stars 58 forks source link

Odd behavior on MacOS on Module::evaluate #304

Closed felipefdl closed 2 months ago

felipefdl commented 2 months ago

I have some unit test passing on Linux normally, but on Mac it always fail.

I realize if I pass cargo test -r, on release mode, all test is complete with success.

I tested it with my co-work MacBook, same thing.

cargo test - On macOS fail cargo test -r - On macOS pass cargo test - on Linux, pass cargo test -r - on Linux pass

failures:

---- lib_test::test_enab_payload_lora_packet stdout ----
Payload Parser Error: Error:384:39 stack overflow
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at create (module_lora_packet:405:29)
    at createEncryptor (module_lora_packet:3479:35)
    at call (native)
    at reset (module_lora_packet:3634:40)
    at init (module_lora_packet:3370:18)
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at <anonymous> (module_lora_packet:384:39)
    at apply (native)
    at create (module_lora_packet:405:29)
    at createEncryptor (module_lora_packet:3336:25)
    at encrypt (module_lora_packet:3777:36)
    at encrypt (module_lora_packet:3448:52)
    at decrypt (module_lora_packet:5709:59)
    at _extractPayload_everynet (device_payload_parser:540:40)
    at <anonymous> (device_payload_parser:759:29)

Stack backtrace:
   0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2: std::backtrace::Backtrace::create
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/backtrace.rs:331:13
   3: anyhow::kind::Adhoc::new
             at /Users/felipefdl/.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.82/src/kind.rs:73:36
   4: payload_parser::resolver::{{closure}}::{{closure}}
             at ./src/lib.rs:110:18
   5: core::result::Result<T,E>::map_err
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/result.rs:829:27
   6: payload_parser::resolver::{{closure}}
             at ./src/lib.rs:102:5
   7: rquickjs_core::context::base::Context::with
             at /Users/felipefdl/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.0/src/context/base.rs:124:9
   8: payload_parser::resolver
             at ./src/lib.rs:54:57
   9: payload_parser::lib_test::test_enab_payload_lora_packet
             at ./src/lib_test.rs:866:11
  10: payload_parser::lib_test::test_enab_payload_lora_packet::{{closure}}
             at ./src/lib_test.rs:707:35
  11: core::ops::function::FnOnce::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  12: core::ops::function::FnOnce::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  13: test::__rust_begin_short_backtrace
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:621:18
  14: test::run_test_in_process::{{closure}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:644:60
  15: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panic/unwind_safe.rs:272:9
  16: std::panicking::try::do_call
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:554:40
  17: std::panicking::try
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:518:19
  18: std::panic::catch_unwind
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panic.rs:142:14
  19: test::run_test_in_process
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:644:27
  20: test::run_test::{{closure}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:567:43
  21: test::run_test::{{closure}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:595:41
  22: std::sys_common::backtrace::__rust_begin_short_backtrace
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:155:18
  23: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/mod.rs:529:17
  24: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panic/unwind_safe.rs:272:9
  25: std::panicking::try::do_call
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:554:40
  26: std::panicking::try
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:518:19
  27: std::panic::catch_unwind
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panic.rs:142:14
  28: std::thread::Builder::spawn_unchecked_::{{closure}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/mod.rs:528:30
  29: core::ops::function::FnOnce::call_once{{vtable.shim}}
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  30: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
  31: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
  32: std::sys::pal::unix::thread::Thread::new::thread_start
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys/pal/unix/thread.rs:108:17
  33: __pthread_joiner_wake
thread 'lib_test::test_enab_payload_lora_packet' panicked at packages/device-data-rs/payload-parser/src/lib_test.rs:866:48:
Payload parser resolved: "Error:384:39 stack overflow\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at create (module_lora_packet:405:29)\n    at createEncryptor (module_lora_packet:3479:35)\n    at call (native)\n    at reset (module_lora_packet:3634:40)\n    at init (module_lora_packet:3370:18)\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at <anonymous> (module_lora_packet:384:39)\n    at apply (native)\n    at create (module_lora_packet:405:29)\n    at createEncryptor (module_lora_packet:3336:25)\n    at encrypt (module_lora_packet:3777:36)\n    at encrypt (module_lora_packet:3448:52)\n    at decrypt (module_lora_packet:5709:59)\n    at _extractPayload_everynet (device_payload_parser:540:40)\n    at <anonymous> (device_payload_parser:759:29)\n"
stack backtrace:
   0:        0x1023a38b0 - std::backtrace_rs::backtrace::libunwind::trace::h89330013351db63c
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:        0x1023a38b0 - std::backtrace_rs::backtrace::trace_unsynchronized::hef5ed454b5e9a42a
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x1023a38b0 - std::sys_common::backtrace::_print_fmt::h661fed69b93a32f7
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:68:5
   3:        0x1023a38b0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h0aa20ca08aeb683c
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:44:22
   4:        0x1023bff94 - core::fmt::rt::Argument::fmt::h0c1f3a7ec00b5b49
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/fmt/rt.rs:142:9
   5:        0x1023bff94 - core::fmt::write::h168dbafcf35bac68
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/fmt/mod.rs:1120:17
   6:        0x1023a12b0 - std::io::Write::write_fmt::h6542afca710d2aa1
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/io/mod.rs:1846:15
   7:        0x1023a36e4 - std::sys_common::backtrace::_print::h7d087ee39ce46706
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:47:5
   8:        0x1023a36e4 - std::sys_common::backtrace::print::h57b289e4b951ee17
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:34:9
   9:        0x1023a5220 - std::panicking::default_hook::{{closure}}::h783b6c512154ec65
  10:        0x1023a4ec4 - std::panicking::default_hook::hcdfa9e1e0f234a4f
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:289:9
  11:        0x10226c68c - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h3cf3ce73e84ce225
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2029:9
  12:        0x10226c68c - test::test_main::{{closure}}::h9d56b9ce955dc4cd
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:138:21
  13:        0x1023a5794 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hb13168aedd865984
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2029:9
  14:        0x1023a5794 - std::panicking::rust_panic_with_hook::h9aea678ca49d64cf
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:785:13
  15:        0x1023a5550 - std::panicking::begin_panic_handler::{{closure}}::ha16c3377e66deceb
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:659:13
  16:        0x1023a3d34 - std::sys_common::backtrace::__rust_end_short_backtrace::hea8fdda1ea8a4c0e
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:171:18
  17:        0x1023a52d8 - rust_begin_unwind
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:647:5
  18:        0x1023cbe48 - core::panicking::panic_fmt::h1cb43b60f5788132
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:72:14
  19:        0x1023cc208 - core::result::unwrap_failed::h71a35eff74d84b68
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/result.rs:1649:5
  20:        0x102239d60 - core::result::Result<T,E>::expect::h123b2c71c2e14c5f
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/result.rs:1030:23
  21:        0x102237c68 - payload_parser::lib_test::test_enab_payload_lora_packet::h347da60020ab4aa9
                               at /Users/felipefdl/Projects/tago/server3/packages/device-data-rs/payload-parser/src/lib_test.rs:866:11
  22:        0x102238ddc - payload_parser::lib_test::test_enab_payload_lora_packet::{{closure}}::hb564f0be03cbccbd
                               at /Users/felipefdl/Projects/tago/server3/packages/device-data-rs/payload-parser/src/lib_test.rs:707:35
  23:        0x102240298 - core::ops::function::FnOnce::call_once::h87aa94729e903122
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  24:        0x102270ed4 - core::ops::function::FnOnce::call_once::hb3c0dee7cdf88f0c
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  25:        0x102270ed4 - test::__rust_begin_short_backtrace::he4ac465ee2112f70
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:621:18
  26:        0x10226ff20 - test::run_test_in_process::{{closure}}::ha6baf8ecb5242aaf
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:644:60
  27:        0x10226ff20 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::ha76db1f1ad9fbf6f
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panic/unwind_safe.rs:272:9
  28:        0x10226ff20 - std::panicking::try::do_call::h06b22ba7f52b15e2
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:554:40
  29:        0x10226ff20 - std::panicking::try::h86a02c069f1b09c9
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:518:19
  30:        0x10226ff20 - std::panic::catch_unwind::hfa73aec6159ed576
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panic.rs:142:14
  31:        0x10226ff20 - test::run_test_in_process::hd837f8fe8df8c2de
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:644:27
  32:        0x10226ff20 - test::run_test::{{closure}}::h596d0554a4a78e26
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:567:43
  33:        0x102242490 - test::run_test::{{closure}}::h9f22941de8a64374
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/test/src/lib.rs:595:41
  34:        0x102242490 - std::sys_common::backtrace::__rust_begin_short_backtrace::ha5f46acead689572
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:155:18
  35:        0x102246c78 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h495a1002c3d0572a
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/mod.rs:529:17
  36:        0x102246c78 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hc8945aefab4eaf1b
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panic/unwind_safe.rs:272:9
  37:        0x102246c78 - std::panicking::try::do_call::h865f5d4f21cd2bab
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:554:40
  38:        0x102246c78 - std::panicking::try::h5d8ad1b089e51b96
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:518:19
  39:        0x102246c78 - std::panic::catch_unwind::h27d3accc6f07d38f
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panic.rs:142:14
  40:        0x102246c78 - std::thread::Builder::spawn_unchecked_::{{closure}}::h6ba16356074a93d1
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/mod.rs:528:30
  41:        0x102246c78 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hbfacf00afa1541e7
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  42:        0x1023a8c08 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::he00394a3411d39eb
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
  43:        0x1023a8c08 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hfcfcdc85194fef1b
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
  44:        0x1023a8c08 - std::sys::pal::unix::thread::Thread::new::thread_start::h207e3c76161182d1
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys/pal/unix/thread.rs:108:17
  45:        0x19499ef94 - __pthread_joiner_wake

failures:
    lib_test::test_enab_payload_lora_packet
richarddd commented 2 months ago

Try increasing stack size. Release mode does a ton of optimizations that requires a smaller stack.

let runtime = AsyncRuntime::new()?;
runtime.set_max_stack_size(512 * 1024).await;
felipefdl commented 2 months ago

That worked, thank you @richarddd !