Stream: general

Topic: ✔ target-riscv64 decommit_table_pages.


view this post on Zulip yang yu (Aug 30 2022 at 01:28):

https://github.com/bytecodealliance/wasmtime/blob/main/crates/runtime/src/instance/allocator/pooling/unix.rs#L19

decommit_table_pages should zero-fill some memory address.
But I add some test.

#[test]
    fn test_decommit_table_pages() {
        use super::Mmap;
        let num = 3;
        let mut memory = Mmap::accessible_reserved(4 * 1024, 4 * 1024).unwrap();
        for i in 0..num {
            memory.as_mut_slice()[i] = i as u8;
        }
        let s = unsafe { std::slice::from_raw_parts_mut(memory.as_mut_ptr(), num) };
        println!("memory:{:?}", s);
        imp::decommit_table_pages(memory.as_mut_ptr(), num).unwrap();
        println!("memory:{:?}", s);
        assert_eq!(s, &[0, 0, 0]);
    }
Running `qemu-riscv64-static -L /usr/riscv64-linux-gnu -E LD_LIBRARY_PATH=/usr/riscv64-linux-gnu/lib -E WASMTIME_TEST_NO_HOG_MEMORY=1 /home/yuyang/projects/wasmtime/target/riscv64gc-unknown-linux-gnu/debug/deps/wasmtime_runtime-3e341cc661b6ff0e 'instance::allocator::pooling::test::test_decommit_table_pages' -Z unstable-options --show-output`

running 1 test
test instance::allocator::pooling::test::test_decommit_table_pages ... FAILED

successes:

successes:

failures:

---- instance::allocator::pooling::test::test_decommit_table_pages stdout ----
memory:[0, 1, 2]
memory:[0, 1, 2]
thread 'instance::allocator::pooling::test::test_decommit_table_pages' panicked at 'assertion failed: `(left == right)`
  left: `[0, 1, 2]`,
 right: `[0, 0, 0]`', crates/runtime/src/instance/allocator/pooling.rs:1509:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/panicking.rs:142:14
   2: core::panicking::assert_failed_inner
   3: core::panicking::assert_failed
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/panicking.rs:181:5
   4: wasmtime_runtime::instance::allocator::pooling::test::test_decommit_table_pages
             at ./src/instance/allocator/pooling.rs:1509:9
   5: wasmtime_runtime::instance::allocator::pooling::test::test_decommit_table_pages::{{closure}}
             at ./src/instance/allocator/pooling.rs:1498:5
   6: core::ops::function::FnOnce::call_once
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/ops/function.rs:248:5
   7: core::ops::function::FnOnce::call_once
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.


failures:
    instance::allocator::pooling::test::test_decommit_table_pages

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 34 filtered out; finished in 0.11s

error: test failed, to rerun pass '-p wasmtime-runtime --lib'
A fast and secure runtime for WebAssembly. Contribute to bytecodealliance/wasmtime development by creating an account on GitHub.

view this post on Zulip yang yu (Aug 30 2022 at 01:32):

this cause table_limit test failed.
https://github.com/bytecodealliance/wasmtime/blob/46782b18c2fb0dd5d2b931bb6ec7f9ead4bc809b/tests/all/pooling_allocator.rs#L242

A fast and secure runtime for WebAssembly. Contribute to bytecodealliance/wasmtime development by creating an account on GitHub.

view this post on Zulip yang yu (Aug 30 2022 at 01:33):

https://man7.org/linux/man-pages/man2/madvise.2.html

view this post on Zulip yang yu (Aug 30 2022 at 01:40):

yuyang@yuyang-Inspiron-7590:~/projects/wasmtime/crates/runtime$ RUST_BACKTRACE=1 /home/yuyang/.cargo/bin/cargo test --features pooling-allocator  --color=always --package wasmtime-runtime --lib instance::allocator::pooling::test::test_decommit_table_pages  --target x86_64-unknown-linux-gnu        --no-fail-fast --     -Z unstable-options --show-output  --test-threads=1
    Finished test [unoptimized + debuginfo] target(s) in 0.07s
     Running unittests src/lib.rs (/home/yuyang/projects/wasmtime/target/x86_64-unknown-linux-gnu/debug/deps/wasmtime_runtime-ea0da4b5057bbc63)

running 1 test
test instance::allocator::pooling::test::test_decommit_table_pages ... ok

successes:

successes:
    instance::allocator::pooling::test::test_decommit_table_pages

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 34 filtered out; finished in 0.00s

x86_64-unknown-linux-gnu can pass test.

view this post on Zulip Chris Fallin (Aug 30 2022 at 01:48):

@yang yu this is a known issue with qemu: its implementation of the madvise system call is incomplete. Apparently the very newest qemu supports it properly (main branch from their git repo), or you can build from source with the ci/qemu-madvise.patch patch from our repository.

view this post on Zulip yang yu (Aug 30 2022 at 01:53):

@Chris Fallin ok, thanks.

view this post on Zulip Notification Bot (Aug 30 2022 at 03:14):

yang yu has marked this topic as resolved.


Last updated: Dec 23 2024 at 12:05 UTC