• binji's avatar
    Fix cluster-fuzz regression when getting message from Worker · 28b0129b
    binji authored
    The issue is that Worker.prototype.terminate was deleting the C++ Worker
    object, and then Worker.prototype.getMessage was trying to read messages from
    the queue.
    
    The simplest solution is to keep workers in a zombie state when they have been
    terminated. They won't be reaped until Shell::CleanupWorkers is called.
    
    I've also fixed some threading issues with Workers:
    
    * Workers can be created by another Worker, so the Shell::workers_ variable
    must be protected by a mutex.
    
    * An individual Worker can typically only be accessed by the isolate that
    created it, but the main thread can always terminate it, so the Worker::state_
    must be accessed in a thread-safe way.
    
    BUG=chromium:504136
    R=jochen@chromium.org
    LOG=n
    
    Review URL: https://codereview.chromium.org/1208733002
    
    Cr-Commit-Position: refs/heads/master@{#29306}
    28b0129b
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...