- Notifications
You must be signed in to change notification settings - Fork 14k
Open
Labels
C-bugCategory: This is a bug.Category: This is a bug.O-wasmTarget: WASM (WebAssembly), http://webassembly.org/Target: WASM (WebAssembly), http://webassembly.org/P-mediumMedium priorityMedium priority
Description
The code:
fn main() {} #[export_name="test"] pub fn test() {}would produce the following Wasm assembly on Rust 1.66.1 compiled with cargo build --target="wasm32-wasi":
;; ... truncated ... (func $test.command_export (type 0) call $__wasm_call_ctors ;; <- WASI initialized here ;; ... truncated ... (export "test" (func $test.command_export)) (export "main" (func $main.command_export)) ;; ... truncated ...On 1.67.0 it produces this one:
;; ... truncated ... (func $test (type 0) return) ;; ... truncated ... (export "test" (func $test)) (export "_start" (func $_start)) ;; ... truncated ...Notice that the call to the $__wasm_call_ctors function is missing in the exported test. This means that when entering the Wasm instance through the exported function, it will not have a correctly set up WASI environment and calls to open files or look up environment variables will fail. The _start function in both versions calls $__wasm_call_ctors and works correctly.
I'm not sure what commit broke this. The only PR that is related to this seems to be this one #105405.
EDIT: Or more likely, this one #105395
tqwewe and syakupov
Metadata
Metadata
Assignees
Labels
C-bugCategory: This is a bug.Category: This is a bug.O-wasmTarget: WASM (WebAssembly), http://webassembly.org/Target: WASM (WebAssembly), http://webassembly.org/P-mediumMedium priorityMedium priority