• Ulan Degenbaev's avatar
    [heap] Fix clearing of slots in concurrent sweeper. · ef0e8359
    Ulan Degenbaev authored
    This fixes an old bug uncovered by
    https://chromium-review.googlesource.com/591651
    
    The bug is a race between the concurrent sweeper clearing slots and
    the mutator adding slots and trimming fixed array:
    
    1) The sweeper starts sweeping a page with an existing fixed array.
    2) The sweeper pre-caches the slots clearing mode by checking if the
       slot set pointer on the page is null or not. (This is the bug).
    3) The mutator updates the fixed array such that new slots are added.
    4) The mutator trims the fixed array such that the added slots are
       now in free space.
    5) The sweeper adds the trimmed part of the fixed array to free list,
       but does not clear slots there because of the cached flag.
    6) A new object is allocated from the free list entry and it has
       a bogus slot entry recorded.
    
    Bug: chromium:752750
    TBR: mlippautz@chromium.org
    Change-Id: I4f70514fa05b692a27d992954cb4c314ef4cac07
    Reviewed-on: https://chromium-review.googlesource.com/608047Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#47242}
    ef0e8359
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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 Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm 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...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...