-
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: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53428}
2301ffe7