Description[heap] Ensure that the sweeper does not lose unswept pages.
This fixes a race between the sweeper and the array buffer tracker
that causes the sweeper to skip unswept pages.
The scenario:
1. Mark-compact GC adds page p to the sweeping_list_ of the sweeper.
2. GC finishes, the main thread starts executinng JS.
3. The main thread takes p->mutex to unregister an array buffer.
4. A sweeper thread removes p from the sweeping_list_ and tries to
take p->mutex. The try fails. The sweeper drops p and continues
to the next page.
5. During selection of evacuation candidate in the next GC we hit
page->SweepingDone() assert.
BUG=chromium:650314
Committed: https://crrev.com/b621987195cdb1b2031809d9f10aff3005190161
Cr-Commit-Position: refs/heads/master@{#40857}
Patch Set 1 #
Total comments: 2
Patch Set 2 : address comment #Messages
Total messages: 12 (6 generated)
|