Stream: git-wasmtime

Topic: wasmtime / issue #6009 [chaos mode] Choose a random e-nod...


view this post on Zulip Wasmtime GitHub notifications bot (Mar 13 2023 at 20:48):

fitzgen opened issue #6009:

This is what wasm-mutate does to generate pseudo-random semantics-preserving Wasm programs from an input Wasm module. We could also do it in our own mid end to exercise the back half of the compiler pipeline.


          I was talking with @jacarte the other day as well and he had a similar idea: do the `wasm-mutate` e-graphs thing (select a random e-node from the e-class rather than the best e-node). I guess this would also fit in with the chaos mode work.

_Originally posted by @fitzgen in https://github.com/bytecodealliance/wasmtime/issues/5967#issuecomment-1464716718_

view this post on Zulip Wasmtime GitHub notifications bot (Mar 15 2023 at 14:56):

remlse commented on issue #6009:

Related to #4134

view this post on Zulip Wasmtime GitHub notifications bot (Mar 17 2023 at 16:06):

Jacarte commented on issue #6009:

(Commenting here the same I wrote in the issue)

The concept of "semantically equivalent" is actually subjective. The rewriting rule can be anything that changes the final code. In a potential real chaos mode, you can add whatever transformation rule, for example, x => x + 1.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 17 2023 at 16:09):

Jacarte edited a comment on issue #6009:

(Commenting here the same I wrote in the issue)

The concept of "semantically equivalent" is actually subjective. The rewriting rule can be anything that changes the final code. In a potential real chaos mode, you can add whatever transformation rule, for example, x => x + 1. Applying that rule wil eventually stress the memory boundaries.

Yet, all of this are assumptions :), but, we have some of these "non-semantic" rules in wasm-mutate, https://github.com/bytecodealliance/wasm-tools/blob/458ff31e50249646eb89a23519de926be6732b65/crates/wasm-mutate/src/mutators/peephole/rules.rs#L394

view this post on Zulip Wasmtime GitHub notifications bot (Mar 17 2023 at 16:56):

cfallin commented on issue #6009:

@Jacarte I may be missing some context here to interpret your suggestion, but in the context we are imagining in the chaos-mode test infrastructure, we do actually need semantics-preserving transforms only. The idea is that every compilation with arbitrary chaos-mode choices is still a valid compilation. Unless we pair e.g. x -> x + 1 with equivalent updates of uses of x everywhere (x' - 1) then we've broken the input program. Perhaps you're thinking in a purely generative context (creating new, arbitrary programs) rather than a transforming/optimizing context?

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 08:54):

Jacarte commented on issue #6009:

@Jacarte I may be missing some context here to interpret your suggestion, but in the context we are imagining in the chaos-mode test infrastructure, we _do_ actually need semantics-preserving transforms only.

I agree, it was just a suggestion on disabling the semantic-aware restriction :big_smile:

The idea is that every compilation with arbitrary chaos-mode choices is still a valid compilation. Unless we pair e.g. x -> x + 1 with equivalent updates of uses of x everywhere (x' - 1) then we've broken the input program. Perhaps you're thinking in a purely generative context (creating new, arbitrary programs) rather than a transforming/optimizing context?

Yeah, that was the case, sorry for the missunderstanding.

Eitherway, here you can find a small (maybe not enough) explanation on what we did https://www.jacarte.me/assets/pdf/wasm_mutate.pdf


Last updated: Dec 23 2024 at 12:05 UTC