Web49 icon indicating copy to clipboard operation
Web49 copied to clipboard

libsodium tests/benchmarks are segfaulting/producing wrong results

Open jedisct1 opened this issue 2 years ago • 2 comments

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.

jedisct1 avatar Jan 09 '23 15:01 jedisct1

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

ShawSumma avatar Jan 09 '23 17:01 ShawSumma

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.

ShawSumma avatar Jan 17 '23 14:01 ShawSumma