• Austin Clements's avatar
    runtime: free dead G stacks concurrently · e8337491
    Austin Clements authored
    Currently we free cached stacks of dead Gs during STW stack root
    marking. We do this during STW because there's no way to take
    ownership of a particular dead G, so attempting to free a dead G's
    stack during concurrent stack root marking could race with reusing
    that G.
    
    However, we can do this concurrently if we take a completely different
    approach. One way to prevent reuse of a dead G is to remove it from
    the free G list. Hence, this adds a new fixed root marking task that
    simply removes all Gs from the list of dead Gs with cached stacks,
    frees their stacks, and then adds them to the list of dead Gs without
    cached stacks.
    
    This is also a necessary step toward rescanning only dirty stacks,
    since it eliminates another task from STW stack marking.
    
    Change-Id: Iefbad03078b284a2e7bf30fba397da4ca87fe095
    Reviewed-on: https://go-review.googlesource.com/20665Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    e8337491
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...