• Austin Clements's avatar
    runtime: mark tiny blocks at GC start · 85c22bc3
    Austin Clements authored
    The hybrid barrier requires allocate-black, but there's one case where
    we don't currently allocate black: the tiny allocator. If we allocate
    a *new* tiny alloc block during GC, it will be allocated black, but if
    we allocated the current block before GC, it won't be black, and the
    further allocations from it won't mark it, which means we may free a
    reachable tiny block during sweeping.
    
    Fix this by passing over all mcaches at the beginning of mark, while
    the world is still stopped, and greying their tiny blocks.
    
    Updates #17503.
    
    Change-Id: I04d4df7cc2f553f8f7b1e4cb0b52e2946588111a
    Reviewed-on: https://go-review.googlesource.com/31456Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
    85c22bc3
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...