lukewagner added the bug label to Issue #12391.
lukewagner opened issue #12391:
Currently, this WAST:
(assert_trap (component (core module $Memory (memory (export "mem") 1)) (core instance $memory (instantiate $Memory)) (core module $M (import "" "waitable-set.new" (func $waitable-set.new (result i32))) (import "" "waitable-set.wait" (func $waitable-set.wait (param i32 i32) (result i32))) (func $start (drop (call $waitable-set.wait (call $waitable-set.new) (i32.const 0))) ) (start $start) ) (canon waitable-set.new (core func $waitable-set.new)) (canon waitable-set.wait (memory $memory "mem") (core func $waitable-set.wait)) (core instance $m (instantiate $M (with "" (instance (export "waitable-set.new" (func $waitable-set.new)) (export "waitable-set.wait" (func $waitable-set.wait)) )))) ) "cannot block a synchronous task before returning" )panics with:
thread 'main' (2367885) panicked at crates/wasmtime/src/runtime/component/concurrent.rs:1517:39: called `Option::unwrap()` on a `None` value stack backtrace: 0: __rustc::rust_begin_unwind 1: core::panicking::panic_fmt 2: core::panicking::panic 3: core::option::unwrap_failed 4: wasmtime::runtime::component::concurrent::<impl wasmtime::runtime::store::StoreOpaque>::check_blocking 5: wasmtime::runtime::component::concurrent::<impl wasmtime::runtime::component::instance::Instance>::waitable_set_wait
lukewagner commented on issue #12391:
This test case and another like it now available to pull in from
test/async/dont-block-start.wastonmain.
alexcrichton commented on issue #12391:
@dicej this should be fixed by https://github.com/bytecodealliance/wasmtime/pull/12379 I think, right?
dicej commented on issue #12391:
Yes, it should be. I'll test it on that branch when I get a chance.
dicej commented on issue #12391:
Yup, test passes (no panic) on that branch.
dicej closed issue #12391:
Currently, this WAST:
(assert_trap (component (core module $Memory (memory (export "mem") 1)) (core instance $memory (instantiate $Memory)) (core module $M (import "" "waitable-set.new" (func $waitable-set.new (result i32))) (import "" "waitable-set.wait" (func $waitable-set.wait (param i32 i32) (result i32))) (func $start (drop (call $waitable-set.wait (call $waitable-set.new) (i32.const 0))) ) (start $start) ) (canon waitable-set.new (core func $waitable-set.new)) (canon waitable-set.wait (memory $memory "mem") (core func $waitable-set.wait)) (core instance $m (instantiate $M (with "" (instance (export "waitable-set.new" (func $waitable-set.new)) (export "waitable-set.wait" (func $waitable-set.wait)) )))) ) "cannot block a synchronous task before returning" )panics with:
thread 'main' (2367885) panicked at crates/wasmtime/src/runtime/component/concurrent.rs:1517:39: called `Option::unwrap()` on a `None` value stack backtrace: 0: __rustc::rust_begin_unwind 1: core::panicking::panic_fmt 2: core::panicking::panic 3: core::option::unwrap_failed 4: wasmtime::runtime::component::concurrent::<impl wasmtime::runtime::store::StoreOpaque>::check_blocking 5: wasmtime::runtime::component::concurrent::<impl wasmtime::runtime::component::instance::Instance>::waitable_set_wait
Last updated: Jan 29 2026 at 13:25 UTC