FastVM / Web49

Web49: WebAssembly Interpeter
MIT License
322 stars 15 forks source link

libsodium tests/benchmarks are segfaulting/producing wrong results #4

Open jedisct1 opened 1 year ago

jedisct1 commented 1 year ago

Hi!

I'd like to add web49 to the lists of runtimes libsodium can support for testing wasm32-wasi.

web49 currently doesn't implement wasi_random_get, which I added a simple implementation for. But in benchmark mode, it's not even required by most tests.

However, many tests, when run under web49, either cause the interpreter to segfault, or return incorrect values.

For example scalarmult.wasm segfaults, and xchacha20.wasm trips on many assertions due to incorrect computations.

The benchmark files used for the most recent round of the libsodium benchmark can be downloaded here.

These benchmarks, or the test files that are faster to execute and still trigger the issues with web49, can be created simply by running the zig build -Drelease-fast -Dtarget=wasm32-wasi command in the root directory of the libsodium source code.

ShawSumma commented 1 year ago

zig by default uses multiple values, which has a few bugs right now.

ShawSumma commented 1 year ago

Currently working on Multiple Values support, it kinda requires a bit of a big refactor. Instead of immediately crashing auth.wasm now crashes after 500ms, Progress! Ill comment more when they all or almost all work.