Skip to content

Emulator fails to execute code eq_*64 that VM executes fine #228

@greenhat

Description

@greenhat

On the following MASM:

# mod test_rust_23a27398cbfb7447cb610e7b877565f4e43d633b55f98504051b93381d40740f

export.entrypoint
    movdn.3
    movdn.3
    movup.2
    eq
    movdn.3
    eq
    and
end


begin
    exec.::test_rust_23a27398cbfb7447cb610e7b877565f4e43d633b55f98504051b93381d40740f::entrypoint  
end

With error:

thread 'rust_masm_tests::instructions::eq_i64' panicked at /Users/dzadorozhnyi/src/miden-ir/hir/src/asm/stack.rs:284:9:
invalid operand stack index (3), only 2 elements are available
stack backtrace:
   0: rust_begin_unwind
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/core/src/panicking.rs:72:14
   2: midenc_hir::asm::stack::Stack::movdn
             at /Users/dzadorozhnyi/src/miden-ir/hir/src/asm/stack.rs:284:9
   3: midenc_codegen_masm::emulator::Emulator::run_once
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:1296:21
   4: midenc_codegen_masm::emulator::Emulator::step
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:1076:27
   5: midenc_codegen_masm::emulator::Emulator::run
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:1168:25
   6: midenc_codegen_masm::emulator::Emulator::invoke_function
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:676:17
   7: midenc_codegen_masm::emulator::Emulator::invoke
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:627:46
   8: midenc_codegen_masm::emulator::Emulator::start
             at /Users/dzadorozhnyi/src/miden-ir/codegen/masm/src/emulator/mod.rs:520:21
   9: miden_integration_tests::exec_emulator::execute_emulator
             at ./src/exec_emulator.rs:19:25
  10: miden_integration_tests::rust_masm_tests::run_masm_vs_rust
             at ./src/rust_masm_tests/mod.rs:32:25
  11: miden_integration_tests::rust_masm_tests::instructions::eq_i64::{{closure}}
             at ./src/rust_masm_tests/instructions.rs:35:25
  12: core::ops::function::impls::<impl core::ops::function::Fn<A> for &F>::call
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/core/src/ops/function.rs:262:13
  13: proptest::test_runner::runner::call_test::{{closure}}
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:256:49
  14: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/core/src/panic/unwind_safe.rs:272:9
  15: std::panicking::try::do_call
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/std/src/panicking.rs:552:40
  16: ___rust_try
  17: std::panicking::try
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/std/src/panicking.rs:516:19
  18: std::panic::catch_unwind
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/std/src/panic.rs:146:14
  19: proptest::test_runner::runner::call_test
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:256:9
  20: proptest::test_runner::runner::TestRunner::shrink
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:845:30
  21: proptest::test_runner::runner::TestRunner::run_one_with_replay
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:735:27
  22: proptest::test_runner::runner::TestRunner::gen_and_run_case
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:664:23
  23: proptest::test_runner::runner::TestRunner::run_in_process_with_replay
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:613:26
  24: proptest::test_runner::runner::TestRunner::run_in_process
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:570:9
  25: proptest::test_runner::runner::TestRunner::run
             at /Users/dzadorozhnyi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proptest-1.4.0/src/test_runner/runner.rs:413:13
  26: miden_integration_tests::rust_masm_tests::instructions::eq_i64
             at ./src/rust_masm_tests/instructions.rs:29:27
  27: miden_integration_tests::rust_masm_tests::instructions::eq_i64::{{closure}}
             at ./src/rust_masm_tests/instructions.rs:14:27
  28: core::ops::function::FnOnce::call_once
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/core/src/ops/function.rs:250:5
  29: core::ops::function::FnOnce::call_once
             at /rustc/2d24fe591f30386d6d5fc2bb941c78d7266bf10f/library/core/src/ops/function.rs:250:5

To reproduce:

  1. in [4/x] Restore running MASM in the emulator along the VM in integration tests #227
  2. Uncomment https://github.com/0xPolygonMiden/compiler/blob/90089f401fa2c9e19d9ac6e5432c064d61a060e8/tests/integration/src/rust_masm_tests/mod.rs#L32-L33 to run the compiled MASM on the emulator along the VM.
  3. Run cargo test eq_

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions