Stream: git-wasmtime

Topic: wasmtime / PR #12163 Introduce an OOM-handling `Error` ty...


view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:17):

fitzgen opened PR #12163 from fitzgen:wasmtime-error to bytecodealliance:main:

This new Error has an API that is 99% identical to anyhow::Error's API, but additionally handles memory exhaustion.

This commit only introduces the wasmtime_internal_error crate into our workspace, along with its regular tests and OOM tests. This commit does not, however, migrate Wasmtime's internals or public-facing API over to the new error type yet. That is left for follow up work.

In order to continue fitting Result<(), Error> in one word, there is quite a bit of unsafe code in Error's implementation, mostly surrounding the manual creation of our own moral equivalent of Box<dyn Error> with explicit vtables and type erasure so that we get a thin pointer to a trait object rather than Box<dyn Error>'s fat pointer. To alleviate the associated risks, I've been testing this code under MIRI throughout its whole development, as well as thoroughly testing the API so that MIRI can dynamically exercise all the code paths. Furthermore, I've enabled testing this crate under MIRI in CI.

Part of https://github.com/bytecodealliance/wasmtime/issues/12069

<!--
Please make sure you include the following information:

Our development process is documented in the Wasmtime book:
https://docs.wasmtime.dev/contributing-development-process.html

Please ensure all communication follows the code of conduct:
https://github.com/bytecodealliance/wasmtime/blob/main/CODE_OF_CONDUCT.md
-->

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:17):

fitzgen requested alexcrichton for a review on PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:17):

fitzgen requested wasmtime-fuzz-reviewers for a review on PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:17):

fitzgen requested wasmtime-core-reviewers for a review on PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:17):

fitzgen requested wasmtime-default-reviewers for a review on PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:31):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:33):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:41):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 18:47):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 19:00):

fitzgen commented on PR #12163:

I am not sure why the version bump followed by cargo vet is failing. Digging in...

https://github.com/bytecodealliance/wasmtime/actions/runs/20176633165/job/57926334414?pr=12163

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 19:53):

fitzgen commented on PR #12163:

I am not sure why the version bump followed by cargo vet is failing. Digging in...

Third bullet point over in https://github.com/bytecodealliance/wasmtime/pull/12164

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 19:56):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 19:59):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:29):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:30):

fitzgen commented on PR #12163:

Third bullet point over in #12164

Rebased on top of that PR now that it merged

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:42):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:51):

fitzgen commented on PR #12163:

Grrrr this bump-and-vet CI failure is really annoying me. Works when I run the exact same commands locally:

<details>

nick@hamilton :: (wasmtime-error) :: ~/wasmtime
    $ rustc scripts/publish.rs && ./publish bump-patch
bumping `component-macro-test-helpers`...
bumping `component-async-tests`...
bumping `wizer-fuzz`...
bumping `regex-test`...
bumping `regex-bench`...
bumping `uap-bench`...
bumping `wasmtime-environ-fuzz`...
bumping `wasmtime-bench-api`...
bumping `wasi-preview1-component-adapter`...
bumping `verify-component-adapter`...
bumping `byte-array-literals`...
bumping `wasi-nn-example-winml`...
bumping `wasi-nn-example-named`...
bumping `wasi-nn-example`...
bumping `classification-component-onnx`...
bumping `wasi-nn-example-pytorch`...
bumping `wasmtime-test-macros`...
bumping `wiggle-test`...
bumping `test-programs`...
bumping `test-programs-artifacts`...
bumping `wasmtime-test-util`...
bumping `wasmtime-fuzzing`...
bumping `wasm-spec-interpreter`...
bumping `wasmtime-c-api`...
bumping `cranelift-tools`...
bumping `cranelift-assembler-x64-fuzz`...
bumping `cranelift-fuzzgen`...
bumping `cranelift-filetests`...
bumping `isle-fuzz`...
bumping `veri_ir`...
bumping `veri_engine`...
bumping `islec`...
bumping `pulley-interpreter-fuzz`...
bumping `cranelift-bitset`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-math`...
bumping `pulley-macros`...
bumping `pulley-interpreter`...
bumping `cranelift-srcgen`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64`...
  0.128.0 => 0.128.1
bumping `cranelift-isle`...
  0.128.0 => 0.128.1
bumping `cranelift-entity`...
  0.128.0 => 0.128.1
bumping `cranelift-bforest`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-shared`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-control`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen`...
  0.128.0 => 0.128.1
bumping `cranelift-reader`...
  0.128.0 => 0.128.1
bumping `cranelift-serde`...
  0.128.0 => 0.128.1
bumping `cranelift-module`...
  0.128.0 => 0.128.1
bumping `cranelift-frontend`...
  0.128.0 => 0.128.1
bumping `cranelift-native`...
  0.128.0 => 0.128.1
bumping `cranelift-object`...
  0.128.0 => 0.128.1
bumping `cranelift-interpreter`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-jit-icache-coherence`...
bumping `wasmtime-internal-unwinder`...
bumping `cranelift-jit`...
  0.128.0 => 0.128.1
bumping `cranelift`...
  0.128.0 => 0.128.1
bumping `wiggle-generate`...
bumping `wiggle-macro`...
bumping `wasmtime-internal-error`...
bumping `wasmtime-internal-versioned-export-macros`...
bumping `wasmtime-internal-slab`...
bumping `wasmtime-internal-component-util`...
bumping `wasmtime-internal-wit-bindgen`...
bumping `wasmtime-internal-component-macro`...
bumping `wasmtime-internal-jit-debug`...
bumping `wasmtime-internal-fiber`...
bumping `wasmtime-environ`...
bumping `wasmtime-internal-wmemcheck`...
bumping `wasmtime-internal-cranelift`...
bumping `wasmtime-internal-cache`...
bumping `winch-codegen`...
bumping `wasmtime-internal-winch`...
bumping `wasmtime`...
bumping `wiggle`...
bumping `wasi-common`...
bumping `wasmtime-wasi-io`...
bumping `wasmtime-wasi`...
bumping `wasmtime-wasi-http`...
bumping `wasmtime-wasi-nn`...
bumping `wasmtime-wasi-config`...
bumping `wasmtime-wasi-keyvalue`...
bumping `wasmtime-wasi-threads`...
bumping `wasmtime-wasi-tls`...
bumping `wasmtime-wasi-tls-nativetls`...
bumping `wasmtime-wast`...
bumping `wasmtime-internal-c-api-macros`...
bumping `wasmtime-c-api-impl`...
bumping `wasmtime-wizer`...
bumping `wasmtime-cli-flags`...
bumping `wasmtime-internal-explorer`...
bumping `wasmtime-cli`...
  41.0.0 => 41.0.1
Running: `"cargo" "fetch" "--offline"`

nick@hamilton :: (wasmtime-error *) :: ~/wasmtime
    $ echo $?
0

</details>

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:54):

fitzgen edited a comment on PR #12163:

Grrrr this bump-and-vet CI failure is really annoying me. Works when I run the exact same commands locally:

<details>

nick@hamilton :: (wasmtime-error) :: ~/wasmtime
    $ rustc scripts/publish.rs && ./publish bump-patch
bumping `component-macro-test-helpers`...
bumping `component-async-tests`...
bumping `wizer-fuzz`...
bumping `regex-test`...
bumping `regex-bench`...
bumping `uap-bench`...
bumping `wasmtime-environ-fuzz`...
bumping `wasmtime-bench-api`...
bumping `wasi-preview1-component-adapter`...
bumping `verify-component-adapter`...
bumping `byte-array-literals`...
bumping `wasi-nn-example-winml`...
bumping `wasi-nn-example-named`...
bumping `wasi-nn-example`...
bumping `classification-component-onnx`...
bumping `wasi-nn-example-pytorch`...
bumping `wasmtime-test-macros`...
bumping `wiggle-test`...
bumping `test-programs`...
bumping `test-programs-artifacts`...
bumping `wasmtime-test-util`...
bumping `wasmtime-fuzzing`...
bumping `wasm-spec-interpreter`...
bumping `wasmtime-c-api`...
bumping `cranelift-tools`...
bumping `cranelift-assembler-x64-fuzz`...
bumping `cranelift-fuzzgen`...
bumping `cranelift-filetests`...
bumping `isle-fuzz`...
bumping `veri_ir`...
bumping `veri_engine`...
bumping `islec`...
bumping `pulley-interpreter-fuzz`...
bumping `cranelift-bitset`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-math`...
bumping `pulley-macros`...
bumping `pulley-interpreter`...
bumping `cranelift-srcgen`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64`...
  0.128.0 => 0.128.1
bumping `cranelift-isle`...
  0.128.0 => 0.128.1
bumping `cranelift-entity`...
  0.128.0 => 0.128.1
bumping `cranelift-bforest`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-shared`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-control`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen`...
  0.128.0 => 0.128.1
bumping `cranelift-reader`...
  0.128.0 => 0.128.1
bumping `cranelift-serde`...
  0.128.0 => 0.128.1
bumping `cranelift-module`...
  0.128.0 => 0.128.1
bumping `cranelift-frontend`...
  0.128.0 => 0.128.1
bumping `cranelift-native`...
  0.128.0 => 0.128.1
bumping `cranelift-object`...
  0.128.0 => 0.128.1
bumping `cranelift-interpreter`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-jit-icache-coherence`...
bumping `wasmtime-internal-unwinder`...
bumping `cranelift-jit`...
  0.128.0 => 0.128.1
bumping `cranelift`...
  0.128.0 => 0.128.1
bumping `wiggle-generate`...
bumping `wiggle-macro`...
bumping `wasmtime-internal-error`...
bumping `wasmtime-internal-versioned-export-macros`...
bumping `wasmtime-internal-slab`...
bumping `wasmtime-internal-component-util`...
bumping `wasmtime-internal-wit-bindgen`...
bumping `wasmtime-internal-component-macro`...
bumping `wasmtime-internal-jit-debug`...
bumping `wasmtime-internal-fiber`...
bumping `wasmtime-environ`...
bumping `wasmtime-internal-wmemcheck`...
bumping `wasmtime-internal-cranelift`...
bumping `wasmtime-internal-cache`...
bumping `winch-codegen`...
bumping `wasmtime-internal-winch`...
bumping `wasmtime`...
bumping `wiggle`...
bumping `wasi-common`...
bumping `wasmtime-wasi-io`...
bumping `wasmtime-wasi`...
bumping `wasmtime-wasi-http`...
bumping `wasmtime-wasi-nn`...
bumping `wasmtime-wasi-config`...
bumping `wasmtime-wasi-keyvalue`...
bumping `wasmtime-wasi-threads`...
bumping `wasmtime-wasi-tls`...
bumping `wasmtime-wasi-tls-nativetls`...
bumping `wasmtime-wast`...
bumping `wasmtime-internal-c-api-macros`...
bumping `wasmtime-c-api-impl`...
bumping `wasmtime-wizer`...
bumping `wasmtime-cli-flags`...
bumping `wasmtime-internal-explorer`...
bumping `wasmtime-cli`...
  41.0.0 => 41.0.1
Running: `"cargo" "fetch" "--offline"`

nick@hamilton :: (wasmtime-error *) :: ~/wasmtime
    $ echo $?
0

</details>

Edit: d'oh I missed that CI is doing a cargo vet after the version bump.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 21:55):

fitzgen edited a comment on PR #12163:

Grrrr this bump-and-vet CI failure is really annoying me. Works when I run the exact same commands locally:

<details>

nick@hamilton :: (wasmtime-error) :: ~/wasmtime
    $ rustc scripts/publish.rs && ./publish bump-patch
bumping `component-macro-test-helpers`...
bumping `component-async-tests`...
bumping `wizer-fuzz`...
bumping `regex-test`...
bumping `regex-bench`...
bumping `uap-bench`...
bumping `wasmtime-environ-fuzz`...
bumping `wasmtime-bench-api`...
bumping `wasi-preview1-component-adapter`...
bumping `verify-component-adapter`...
bumping `byte-array-literals`...
bumping `wasi-nn-example-winml`...
bumping `wasi-nn-example-named`...
bumping `wasi-nn-example`...
bumping `classification-component-onnx`...
bumping `wasi-nn-example-pytorch`...
bumping `wasmtime-test-macros`...
bumping `wiggle-test`...
bumping `test-programs`...
bumping `test-programs-artifacts`...
bumping `wasmtime-test-util`...
bumping `wasmtime-fuzzing`...
bumping `wasm-spec-interpreter`...
bumping `wasmtime-c-api`...
bumping `cranelift-tools`...
bumping `cranelift-assembler-x64-fuzz`...
bumping `cranelift-fuzzgen`...
bumping `cranelift-filetests`...
bumping `isle-fuzz`...
bumping `veri_ir`...
bumping `veri_engine`...
bumping `islec`...
bumping `pulley-interpreter-fuzz`...
bumping `cranelift-bitset`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-math`...
bumping `pulley-macros`...
bumping `pulley-interpreter`...
bumping `cranelift-srcgen`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-assembler-x64`...
  0.128.0 => 0.128.1
bumping `cranelift-isle`...
  0.128.0 => 0.128.1
bumping `cranelift-entity`...
  0.128.0 => 0.128.1
bumping `cranelift-bforest`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-shared`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen-meta`...
  0.128.0 => 0.128.1
bumping `cranelift-control`...
  0.128.0 => 0.128.1
bumping `cranelift-codegen`...
  0.128.0 => 0.128.1
bumping `cranelift-reader`...
  0.128.0 => 0.128.1
bumping `cranelift-serde`...
  0.128.0 => 0.128.1
bumping `cranelift-module`...
  0.128.0 => 0.128.1
bumping `cranelift-frontend`...
  0.128.0 => 0.128.1
bumping `cranelift-native`...
  0.128.0 => 0.128.1
bumping `cranelift-object`...
  0.128.0 => 0.128.1
bumping `cranelift-interpreter`...
  0.128.0 => 0.128.1
bumping `wasmtime-internal-jit-icache-coherence`...
bumping `wasmtime-internal-unwinder`...
bumping `cranelift-jit`...
  0.128.0 => 0.128.1
bumping `cranelift`...
  0.128.0 => 0.128.1
bumping `wiggle-generate`...
bumping `wiggle-macro`...
bumping `wasmtime-internal-error`...
bumping `wasmtime-internal-versioned-export-macros`...
bumping `wasmtime-internal-slab`...
bumping `wasmtime-internal-component-util`...
bumping `wasmtime-internal-wit-bindgen`...
bumping `wasmtime-internal-component-macro`...
bumping `wasmtime-internal-jit-debug`...
bumping `wasmtime-internal-fiber`...
bumping `wasmtime-environ`...
bumping `wasmtime-internal-wmemcheck`...
bumping `wasmtime-internal-cranelift`...
bumping `wasmtime-internal-cache`...
bumping `winch-codegen`...
bumping `wasmtime-internal-winch`...
bumping `wasmtime`...
bumping `wiggle`...
bumping `wasi-common`...
bumping `wasmtime-wasi-io`...
bumping `wasmtime-wasi`...
bumping `wasmtime-wasi-http`...
bumping `wasmtime-wasi-nn`...
bumping `wasmtime-wasi-config`...
bumping `wasmtime-wasi-keyvalue`...
bumping `wasmtime-wasi-threads`...
bumping `wasmtime-wasi-tls`...
bumping `wasmtime-wasi-tls-nativetls`...
bumping `wasmtime-wast`...
bumping `wasmtime-internal-c-api-macros`...
bumping `wasmtime-c-api-impl`...
bumping `wasmtime-wizer`...
bumping `wasmtime-cli-flags`...
bumping `wasmtime-internal-explorer`...
bumping `wasmtime-cli`...
  41.0.0 => 41.0.1
Running: `"cargo" "fetch" "--offline"`

nick@hamilton :: (wasmtime-error *) :: ~/wasmtime
    $ echo $?
0

</details>

Edit: d'oh I missed a command from CI. Can repro.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 22:10):

fitzgen updated PR #12163.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 22:18):

fitzgen commented on PR #12163:

Looks like https://github.com/bytecodealliance/wasmtime/pull/12163/commits/fbac398ef538a6069b4f9d3da45b7ef3f2df4842 did indeed fix the cargo vet issues.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 12 2025 at 23:45):

github-actions[bot] commented on PR #12163:

Subscribe to Label Action

cc @fitzgen

<details>
This issue or pull request has been labeled: "fuzzing"

Thus the following users have been cc'd because of the following labels:

To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.

Learn more.
</details>


Last updated: Dec 13 2025 at 19:03 UTC