WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
208368
[GTK] imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=208368
Summary
[GTK] imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-...
Diego Pino
Reported
2020-02-28 02:37:12 PST
* imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html [ Failure Pass ] The test has been flaky since:
r252470
NOERROR [
r252471
-
r252674
] UNKNOWN
r252675
NOERROR [
r252676
-
r252816
] UNKNOWN
r252817
TEXT PASS (Expected: PASS) Diff: --- /home/igalia/dpino/workspace/webkit-gtk/layout-test-results/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt +++ /home/igalia/dpino/workspace/webkit-gtk/layout-test-results/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-actual.txt @@ -1,3 +1,5 @@ + +Harness Error (TIMEOUT), message = null PASS WebAssembly.instantiate(module): Non-object imports argument: null PASS WebAssembly.instantiate(module): Non-object imports argument: true @@ -90,37 +92,37 @@ PASS WebAssembly.instantiate(buffer): Importing a function with an incorrectly-typed value: 0.1 PASS WebAssembly.instantiate(buffer): Importing a function with an incorrectly-typed value: NaN PASS WebAssembly.instantiate(buffer): Importing a function with an incorrectly-typed value: object "[object Object]" -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: undefined -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: null -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: true -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: "" -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: symbol "Symbol()" -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: plain object -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: WebAssembly.Global -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: WebAssembly.Global.prototype -PASS WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: Object.create(WebAssembly.Global.prototype) -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: undefined -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: null -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: true -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: "" -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: symbol "Symbol()" -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: 1 -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: 0.1 -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: NaN -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: plain object -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: WebAssembly.Memory -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: WebAssembly.Memory.prototype -PASS WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: Object.create(WebAssembly.Memory.prototype) -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: undefined -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: null -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: true -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: "" -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: symbol "Symbol()" -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: 1 -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: 0.1 -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: NaN -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: plain object -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: WebAssembly.Table -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: WebAssembly.Table.prototype -PASS WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: Object.create(WebAssembly.Table.prototype) +TIMEOUT WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: undefined Test timed out +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: null +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: true +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: "" +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: symbol "Symbol()" +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: plain object +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: WebAssembly.Global +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: WebAssembly.Global.prototype +NOTRUN WebAssembly.instantiate(buffer): Importing a global with an incorrectly-typed value: Object.create(WebAssembly.Global.prototype) +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: undefined +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: null +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: true +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: "" +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: symbol "Symbol()" +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: 1 +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: 0.1 +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: NaN +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: plain object +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: WebAssembly.Memory +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: WebAssembly.Memory.prototype +NOTRUN WebAssembly.instantiate(buffer): Importing memory with an incorrectly-typed value: Object.create(WebAssembly.Memory.prototype) +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: undefined +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: null +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: true +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: "" +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: symbol "Symbol()" +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: 1 +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: 0.1 +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: NaN +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: plain object +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: WebAssembly.Table +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: WebAssembly.Table.prototype +NOTRUN WebAssembly.instantiate(buffer): Importing table with an incorrectly-typed value: Object.create(WebAssembly.Table.prototype)
Attachments
Add attachment
proposed patch, testcase, etc.
Lauro Moura
Comment 1
2021-03-29 20:18:48 PDT
imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming-bad-imports.any.worker.html This test was updated and expected pass since
r271993
, but it's flaky with the same behavior. Maybe related
bug211614
(another wasm worker flakiness).
Lauro Moura
Comment 2
2021-03-30 21:12:33 PDT
After some investigation, this seems to be some issue related to timer callbacks being called from different run loops (or something like that). The Wasm.instantiate (JSWebAssembly.cpp::instantiate() call compiles the code asynchronously, scheduling a timer job to resolve the promise as soon as possible (through vm.deferredWorkTimer->scheduleWorkSoon(...). Normal flow: Scheduling: 1 DeferredWorkTimer.cpp::scheduleWorkSoon() 1.1 No scheduled work. Timer scheduled immediately through JSRunLoopTimer.cpp::Manager.scheduleTimer() 1.1.1 scheduleTimer() then associate this timer with the PerVMData for the current VM/runLoop() of this timer. 1.1.2 schedule a oneShot to trigger the timer through the PerVMData manager. Firing timer: 1 JSRunLoopTimer::Manager::timerDidFire() 1.1 Iterate through PerVMData items, skipping those from a different RunLoop than RunLoop::current() 1.2 For each VM, take the timers that should be fired and trigger them. Back to the test, in a normal run, the timerDidFire() call immediately after scheduling is always called from the same RunLoop that registered it and everything follows happily. When the timeout occurs - in comparison to a clean run - the timerDidFire() seems to be called from a different RunLoop::current() than the one when the timer callback was scheduled, so the instantiate() timers are being ignored by the runloop check. Not sure why this is happending or what would be the proper fix. As this does not seems to be something wasm-specific, this could be the cause of other worker tests flakiness, no?
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug