Commit 50ba6e13 authored by Carl Shapiro's avatar Carl Shapiro

runtime: fix scanning of not started goroutines

The stack scanner for not started goroutines ignored the arguments
area when its size was unknown.  With this change, the distance
between the stack pointer and the stack base will be used instead.

Fixes #5486

R=golang-dev, bradfitz, iant, dvyukov
CC=golang-dev
https://golang.org/cl/9440043
parent 21cf646b
......@@ -1454,11 +1454,18 @@ addstackroots(G *gp)
// be scanned. No other live values should be on the
// stack.
f = runtime·findfunc((uintptr)gp->fnstart->fn);
if(f->args > 0) {
if(f->args != 0) {
if(thechar == '5')
sp += sizeof(uintptr);
addroot((Obj){sp, f->args, 0});
}
// If the size of the arguments is known
// scan just the incoming arguments.
// Otherwise, scan everything between the
// top and the bottom of the stack.
if(f->args > 0)
addroot((Obj){sp, f->args, 0});
else
addroot((Obj){sp, (byte*)stk - sp, 0});
}
return;
}
}
......
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