Commit 92eb1e16 authored by Keith Randall's avatar Keith Randall

runtime: free stacks of Gdead goroutines at GC time

We could probably free the G structures as well, but
for the allg list.  Leaving that for another day.

Fixes #8287

LGTM=rsc
R=golang-codereviews, dvyukov, khr, rsc
CC=golang-codereviews
https://golang.org/cl/145010043
parent 6fb9d50d
......@@ -806,8 +806,16 @@ runtime·shrinkstack(G *gp)
{
uintptr used, oldsize, newsize;
if(runtime·readgstatus(gp) == Gdead)
if(runtime·readgstatus(gp) == Gdead) {
if(gp->stack.lo != 0) {
// Free whole stack - it will get reallocated
// if G is used again.
runtime·stackfree(gp->stack);
gp->stack.lo = 0;
gp->stack.hi = 0;
}
return;
}
if(gp->stack.lo == 0)
runtime·throw("missing stack in shrinkstack");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment