• Andreas Haas's avatar
    [wasm] Do not restart compilation tasks after compilation failed · 2301ffe7
    Andreas Haas authored
    This CL fixes a bad interleaving that can happen between the
    CompilationState and streaming compilation. In that particular
    interleaving, streaming compilation tries to restart compilation tasks
    after compilation failed already, which fails with a check in the
    CancelableTaskManager. The problem is the following:
    
    The CompilationState notifies the streaming decoder of compilation
    errors. After receiving the notification, the streaming decoder
    ignores all subsequent incoming bytes. However, the CompilationState
    does not notify the streaming decoder directly, it posts a task
    which will notify the streaming decoder. This means that between the
    failing of compilation and the notification of the streaming decoder
    there is a time window in which compilation already failed but the
    streaming decoder can still restart compilation tasks. The crash
    happened when this time window was hit.
    
    With this CL we check that compilation did not fail before we restart
    compilation tasks. I was never able to reproduce this crash, so I don't
    really know if this particular issue caused the crash.
    
    R=titzer@chromium.org
    
    Bug: chromium:840713
    Change-Id: Ic522b1c21a7d7749c1e7f6097aa450a09fb271cc
    Reviewed-on: https://chromium-review.googlesource.com/1075787Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#53428}
    2301ffe7
Name
Last commit
Last update
..
baseline Loading commit data...
OWNERS Loading commit data...
decoder.h Loading commit data...
function-body-decoder-impl.h Loading commit data...
function-body-decoder.cc Loading commit data...
function-body-decoder.h Loading commit data...
function-compiler.cc Loading commit data...
function-compiler.h Loading commit data...
leb-helper.h Loading commit data...
local-decl-encoder.cc Loading commit data...
local-decl-encoder.h Loading commit data...
memory-tracing.cc Loading commit data...
memory-tracing.h Loading commit data...
module-compiler.cc Loading commit data...
module-compiler.h Loading commit data...
module-decoder.cc Loading commit data...
module-decoder.h Loading commit data...
signature-map.cc Loading commit data...
signature-map.h Loading commit data...
streaming-decoder.cc Loading commit data...
streaming-decoder.h Loading commit data...
value-type.h Loading commit data...
wasm-code-manager.cc Loading commit data...
wasm-code-manager.h Loading commit data...
wasm-code-specialization.cc Loading commit data...
wasm-code-specialization.h Loading commit data...
wasm-constants.h Loading commit data...
wasm-debug.cc Loading commit data...
wasm-engine.cc Loading commit data...
wasm-engine.h Loading commit data...
wasm-external-refs.cc Loading commit data...
wasm-external-refs.h Loading commit data...
wasm-interpreter.cc Loading commit data...
wasm-interpreter.h Loading commit data...
wasm-js.cc Loading commit data...
wasm-js.h Loading commit data...
wasm-limits.h Loading commit data...
wasm-linkage.h Loading commit data...
wasm-memory.cc Loading commit data...
wasm-memory.h Loading commit data...
wasm-module-builder.cc Loading commit data...
wasm-module-builder.h Loading commit data...
wasm-module.cc Loading commit data...
wasm-module.h Loading commit data...
wasm-objects-inl.h Loading commit data...
wasm-objects.cc Loading commit data...
wasm-objects.h Loading commit data...
wasm-opcodes.cc Loading commit data...
wasm-opcodes.h Loading commit data...
wasm-result.cc Loading commit data...
wasm-result.h Loading commit data...
wasm-serialization.cc Loading commit data...
wasm-serialization.h Loading commit data...
wasm-text.cc Loading commit data...
wasm-text.h Loading commit data...
wasm-value.h Loading commit data...