alexcrichton requested dicej for a review on PR #12119.
alexcrichton opened PR #12119 from alexcrichton:more-async-fuzz to bytecodealliance:main:
This commit adds a new fuzzer mode to the
miscfuzzer of Wasmtime which is focused on async events and interleavings of components using the component-model-async proposal. This fuzzer works by having a precompiled guest program which serves as the component to run. This precompiled component has a customfuzz.witwhich is used to interface with the fuzzer itself. The fuzzer is then a fuzz-generated sequence of commands to send to the component which verifies that everything executes correctly, has no panics, etc.This fuzzer intends to stress async communication and task infrastructure with component-model-async. Notably this does not stress lifting/lowering or arbitrary type signatures. This does, however, permute all of the following:
- Guest/host interactions (also guest/guest, host/host, etc).
- Async functions, both ready and pending.
- Future operations: reads, writes, cancellation, transfers, etc.
- Stream operations: reads, writes, cancellation, transfers, etc.
This is all throwing into a large "soup" and then asserted to work correctly. There's a few gotchas here and there for how this fuzzer is designed, such as some events requiring "yield N times to await this event happening". This is required because Wasmtime is allowed to non-deterministically select between a number of "ready events" and what to dispatch.
This is not intended to be a one-size-fits-all fuzzer for component-model-async. The recent enhancements to the
component_apifuzzer are intended to complement this fuzzer in terms of what's stressed where internally.<!--
Please make sure you include the following information:
If this work has been discussed elsewhere, please include a link to that
conversation. If it was discussed in an issue, just mention "issue #...".Explain why this change is needed. If the details are in an issue already,
this can be brief.Our development process is documented in the Wasmtime book:
https://docs.wasmtime.dev/contributing-development-process.htmlPlease ensure all communication follows the code of conduct:
https://github.com/bytecodealliance/wasmtime/blob/main/CODE_OF_CONDUCT.md
-->
alexcrichton commented on PR #12119:
Currently leaving this in draft form while https://github.com/bytecodealliance/wit-bindgen/pull/1446 is pending.
alexcrichton commented on PR #12119:
I'll also note that I understand this is a pretty meat and pretty dense fuzzer, so I'm happy to walk through it if @dicej you or anyone else is interested. I'm also happy to write up more docs anywhere as necessary. Current docs are primarily located at crates/test-programs/src/bin/fuzz_async.rs
alexcrichton updated PR #12119.
alexcrichton updated PR #12119.
github-actions[bot] commented on PR #12119:
Subscribe to Label Action
cc @fitzgen
<details>
This issue or pull request has been labeled: "fuzzing", "wasm-proposal:component-model-async", "wasmtime:api"Thus the following users have been cc'd because of the following labels:
- fitzgen: fuzzing
To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.
Learn more.
</details>
alexcrichton updated PR #12119.
alexcrichton has marked PR #12119 as ready for review.
alexcrichton requested wasmtime-fuzz-reviewers for a review on PR #12119.
alexcrichton requested fitzgen for a review on PR #12119.
alexcrichton requested wasmtime-core-reviewers for a review on PR #12119.
alexcrichton requested wasmtime-default-reviewers for a review on PR #12119.
Last updated: Dec 06 2025 at 07:03 UTC