Stream: git-wasmtime

Topic: wasmtime / issue #1677 Support cleanup during unwinding


view this post on Zulip Wasmtime GitHub notifications bot (Jul 03 2021 at 09:03):

bjorn3 commented on issue #1677:

Original pdf no longer exists. See https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html instead.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 26 2023 at 11:12):

bayedieng commented on issue #1677:

Could this issue be solved independently using the aforementioned solution in the OP's comment or would #3427 be needed to be resolved first?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 26 2023 at 11:20):

bjorn3 commented on issue #1677:

I'm working on this.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 26 2024 at 10:34):

noverby commented on issue #1677:

@bjorn3 Any PR or branch where it is possible to follow progress?

view this post on Zulip Wasmtime GitHub notifications bot (Jun 26 2024 at 10:45):

bjorn3 commented on issue #1677:

https://github.com/bjorn3/wasmtime/tree/bsc-unwinding-simple-invoke3 is the latest version I have. I will rebase it and work on upstreaming when I finish my thesis about it.

view this post on Zulip Wasmtime GitHub notifications bot (Apr 23 2025 at 23:07):

cfallin closed issue #1677:

Feature

Currently the generated unwinding information only restores registers. This issue proposes to make it possible to also run cleanup actions like running destructors during unwinding.

Benefit

This is necessary to support unwinding after a panic in rustc_codegen_cranelift.

Implementation

Add a new invoke terminator that is similar to the call instruction, but has an additional cleanup edge. This cleanup edge will be ignored when emitting actual machine instructions, but it will take part in the regalloc. Next add a way to mark a block as "landing pad". Only "landing pad" blocks can be used as cleanup edge of an invoke terminator. At the start of a "cleanup" block all values are stored either on stack or in any of the registers restored by the system unwinder. The "landing pad" block can also take several arguments. Those will be the values stored in the registers that are allowed for arguments to the landing pad received from the personality function. After codegen the location of every "landing pad" block will be stored in a variable. This will allow the embedder to generate the appropriate LSDA (language specific data area) to reference from the unwinding table.

Alternatives

It is basically impossible to implement cleanup during unwinding without Cranelift support.

References

The "Transferring Control to a Landing Pad" section of https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf

view this post on Zulip Wasmtime GitHub notifications bot (Apr 23 2025 at 23:07):

cfallin commented on issue #1677:

Cleaning up old issues and I believe this is covered now by the exceptions support we landed recently (#10510). Thanks all (and thanks bjorn3 for the experimental work that helped us develop our current design).

view this post on Zulip Wasmtime GitHub notifications bot (Apr 24 2025 at 10:29):

whitequark commented on issue #1677:

Oh, does wasmtime support exceptions now? This is incredibly exciting, is there anything I can read on that?

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

bjorn3 commented on issue #1677:

This isn't implemented on the Wasmtime side yet.

view this post on Zulip Wasmtime GitHub notifications bot (Apr 24 2025 at 12:44):

bjorn3 edited a comment on issue #1677:

This isn't implemented on the Wasmtime side yet.

Edit: https://github.com/bytecodealliance/wasmtime/issues/2049, https://github.com/bytecodealliance/wasmtime/issues/3427 and https://github.com/bytecodealliance/wasmtime/issues/10252 are still open.

view this post on Zulip Wasmtime GitHub notifications bot (Apr 24 2025 at 15:52):

cfallin commented on issue #1677:

Right, this issue was specifically about Cranelift exceptions, @whitequark -- I will hopefully get time to do the Wasmtime side soon (next few months-ish)...

view this post on Zulip Wasmtime GitHub notifications bot (Apr 24 2025 at 16:48):

fitzgen commented on issue #1677:

And if you'd like to learn more, here is the RFC: https://github.com/bytecodealliance/rfcs/pull/36

view this post on Zulip Wasmtime GitHub notifications bot (Apr 24 2025 at 16:51):

whitequark commented on issue #1677:

Thanks all!


Last updated: Dec 13 2025 at 19:03 UTC