[wasm] Resolve promise in separate task
With recent changes, we resolve the promise of e.g. WebAssembly.compile with the external API, and not the V8-internal API. The external API, however, also handles microtasks, and depending on the MicrotasksPolicy, may also execute microtasks immediately. This means the then-handler of WebAssembly.compile may get executed within all the scopes that were open when the external API was called. One of the open scopes is the CancelableTask that finishes WebAssembly compilation. The deadlock seen in the issue arises now when {quit()} gets called in the then-handler of WebAssembly compilation. The reason is that {quit()} terminates the isolate, and during isolate termination, we wait for all running CancelableTasks to finish. This, however, means a deadlock, because the task that terminates the isolate is waiting for itself to finish. R=jkummerow@chrommium.org Bug: chromium:1338150 Change-Id: I89243daffc76a456293519e24bfaad88277bb99a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3717990Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#81311}
Showing
Please
register
or
sign in
to comment