diff options
author | Alon Zakai <azakai@google.com> | 2024-03-19 12:34:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-19 12:34:35 -0700 |
commit | 4ce9fb460b6a1161209904264bafec96abe911ac (patch) | |
tree | 24043d7baa00165c920fd6180d3b447f6ba2e738 /test/lit/exec | |
parent | 70f860e7b11b013efd5af4bb5c14b72d2183a45a (diff) | |
download | binaryen-4ce9fb460b6a1161209904264bafec96abe911ac.tar.gz binaryen-4ce9fb460b6a1161209904264bafec96abe911ac.tar.bz2 binaryen-4ce9fb460b6a1161209904264bafec96abe911ac.zip |
Atomics: Handle timeouts in waits in the (single-threaded) interpreter (#6408)
The interpreter does not run multiple threads, and it was returning 0 from
atomic.wait, which means it was woken up. But it is more correct for it to
return 2, which means it timed out - which is actually the case, as no other
thread exists that can wake it up. However, even that is not good for fuzzing
as the timeout may be infinite or large, so just emit a host limit error on any
timeout for now, until we actually implement threads.
Diffstat (limited to 'test/lit/exec')
-rw-r--r-- | test/lit/exec/atomic.wast | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/lit/exec/atomic.wast b/test/lit/exec/atomic.wast new file mode 100644 index 000000000..73567121f --- /dev/null +++ b/test/lit/exec/atomic.wast @@ -0,0 +1,21 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py --output=fuzz-exec and should not be edited. + +;; RUN: wasm-opt %s -all --fuzz-exec-before -q -o /dev/null 2>&1 | filecheck %s + +(module + (import "fuzzing-support" "log-i32" (func $log (param i32))) + + (memory $0 23 256 shared) + + ;; CHECK: [fuzz-exec] calling wait_and_log + ;; CHECK-NEXT: [LoggingExternalInterface logging 0] + (func $wait_and_log (export "wait_and_log") + (call $log + (memory.atomic.wait64 + (i32.const 0) + (i64.const 0) + (i64.const 0) + ) + ) + ) +) |