Skip to content

Could not get metadata for file when adding a directory with preopen_dir #5183

Open
@cfi2017

Description

@cfi2017

Describe the bug

wasmer -vV; rustc -vV
zsh: command not found: wasmer
rustc 1.84.0-nightly (9b18a122f 2024-10-26)
binary: rustc
commit-hash: 9b18a122f769859dc00d7b2c73b03dc6a1152983
commit-date: 2024-10-26
host: x86_64-unknown-linux-gnu
release: 1.84.0-nightly
LLVM version: 19.1.1

Calling preopen_dir with the current PWD causes an error:

Caused by:
wasi filesystem creation error: Could not get metadata for file "/home/<snip>": entry not found

Steps to reproduce

Calling code:

use std::env;

use wasmer::{Module, Store};
use wasmer_wasix::WasiEnv;

fn main() -> anyhow::Result<()> {
    let mut store = Store::default();
    let module = include_bytes!("../module.wasm");
    let module = Module::new(&store, &module)?;
    let current_dir = env::current_dir()?;
    WasiEnv::builder("wat")
        .preopen_dir(current_dir)?
        .run_with_store(module, &mut store)?;
    Ok(())
}

Runtime dependencies:

[dependencies]
anyhow = "1.0.90"
wasmer = { version = "5.0.0-rc.1", features = ["cranelift"] }
wasmer-wasix = "0.29.0"

module.wasm:

fn main() {
    println!("Writing some bytes");
    let bytes: Vec<u8> = vec![0x60, 0x60, 0x60];
    let file = std::fs::File::create("test.bin").unwrap();
    std::io::Write::write_all(&mut std::io::BufWriter::new(file), &bytes).unwrap();
}

Module dependencies: none

Module is compiled with cargo build --target wasm32-wasip1 --release
Code is run with cargo run --release

Expected behavior

Filesystem mount that the wasm module can access

Actual behavior

An error

Additional context

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions