Skip to content

Question: Segmentation fault (Zero Byte Expected) #97

@Sieluna

Description

@Sieluna

I got a error in console: Segmentation fault (core dumped)

A fast reproduce: https://github.com/LoongBuns/wamr-rust-sdk/tree/ohno/examples/wasm-wild

Run with this wasm https://github.com/wasm3/wasm-coremark/blob/main/coremark-minimal.wasm

I'm not quite sure what I need to enable to get iwasm to understand my needs, as this doesn't fail with other runtimes coremark .

use core::error::Error;
use core::ffi::c_void;
use core::result::Result;

use wamr_rust_sdk::{
    function::Function, instance::Instance, module::Module, runtime::Runtime, value::WasmValue,
};

extern "C" fn clock_ms_host() -> i64 {
    use std::time::{SystemTime, UNIX_EPOCH};
    SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .expect("Clock may have gone backwards")
        .as_millis() as i64
}

impl Runtime {
    pub fn builder_with_module_name(name: &str) -> RuntimeBuilder {
        let args = RuntimeInitArgs::default();
        RuntimeBuilder {
            args,
            host_functions: HostFunctionList::new(name),
        }
    }
}

pub fn wamr_coremark() -> Result<f32, Box<dyn Error>> {
    let coremark_wasm = include_bytes!("https://github.com/wasm3/wasm-coremark/blob/main/coremark-minimal.wasm");
    let runtime = Runtime::builder_with_module_name("env")
        .use_system_allocator()
        .run_as_interpreter()
        .register_host_function("clock_ms", clock_ms_host as *mut c_void)
        .build()?;

    let module = Module::from_vec(&runtime, Vec::from(&coremark_wasm), "")?;

    let instance = Instance::new(&runtime, &module, 2 * 1024)?;

    let function = Function::find_export_func(&instance, "run")?;

    if let WasmValue::F32(res) = function.call(&instance, &vec![])? {
        Ok(res)
    } else {
        panic!("Failed running coremark in wasmr");
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions