mirror of
https://github.com/golang/go
synced 2024-11-26 07:47:57 -07:00
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
This commit is contained in:
parent
21cf646bfc
commit
50ba6e13b4
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user