fitzgen opened PR #12163 from fitzgen:wasmtime-error to bytecodealliance:main:
This new
Errorhas an API that is 99% identical toanyhow::Error's API, but additionally handles memory exhaustion.This commit only introduces the
wasmtime_internal_errorcrate 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 inError's implementation, mostly surrounding the manual creation of our own moral equivalent ofBox<dyn Error>with explicit vtables and type erasure so that we get a thin pointer to a trait object rather thanBox<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:
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
-->
fitzgen requested alexcrichton for a review on PR #12163.
fitzgen requested wasmtime-fuzz-reviewers for a review on PR #12163.
fitzgen requested wasmtime-core-reviewers for a review on PR #12163.
fitzgen requested wasmtime-default-reviewers for a review on PR #12163.
fitzgen updated PR #12163.
fitzgen updated PR #12163.
fitzgen updated PR #12163.
fitzgen updated PR #12163.
fitzgen commented on PR #12163:
I am not sure why the version bump followed by
cargo vetis failing. Digging in...https://github.com/bytecodealliance/wasmtime/actions/runs/20176633165/job/57926334414?pr=12163
fitzgen commented on PR #12163:
I am not sure why the version bump followed by
cargo vetis failing. Digging in...Third bullet point over in https://github.com/bytecodealliance/wasmtime/pull/12164
fitzgen updated PR #12163.
fitzgen updated PR #12163.
fitzgen updated PR #12163.
fitzgen commented on PR #12163:
Third bullet point over in #12164
Rebased on top of that PR now that it merged
fitzgen updated PR #12163.
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>
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 vetafter the version bump.
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.
fitzgen updated PR #12163.
fitzgen commented on PR #12163:
Looks like https://github.com/bytecodealliance/wasmtime/pull/12163/commits/fbac398ef538a6069b4f9d3da45b7ef3f2df4842 did indeed fix the
cargo vetissues.
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:
- fitzgen: fuzzing
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