Commit 85844452 authored by Hector Chu's avatar Hector Chu Committed by Russ Cox

runtime: fix crash when returning from syscall during gc

gp->m can go from non-nil to nil when it re-enters schedule().

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/5245042
parent 4b749567
......@@ -597,6 +597,7 @@ handoff(Workbuf *b)
static void
scanstack(void (*scanblock)(byte*, int64), G *gp)
{
M *mp;
int32 n;
Stktop *stk;
byte *sp, *guard;
......@@ -607,8 +608,8 @@ scanstack(void (*scanblock)(byte*, int64), G *gp)
if(gp == g) {
// Scanning our own stack: start at &gp.
sp = (byte*)&gp;
} else if(gp->m != nil && gp->m->helpgc) {
// Gc helper scans its own stack.
} else if((mp = gp->m) != nil && mp->helpgc) {
// gchelper's stack is in active use and has no interesting pointers.
return;
} else {
// Scanning another goroutine's stack.
......
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