Fixes #733.
R=r
CC=golang-dev
https://golang.org/cl/958041
case Gdead:
break;
case Grunning:
+ case Grecovery:
if(gp != g)
throw("mark - world not stopped");
scanstack(gp);
case Grunnable:
case Gsyscall:
case Gwaiting:
- case Grecovery:
scanstack(gp);
break;
}
}
// Mark runnable.
- if(g->status == Grunnable || g->status == Grunning)
+ if(g->status == Grunnable || g->status == Grunning || g->status == Grecovery)
throw("bad g->status in ready");
g->status = Grunnable;
// before it tests the return value.)
gp->sched.sp = getcallersp(d->sp - 2*sizeof(uintptr));
gp->sched.pc = d->pc;
+ gp->status = Grunning;
free(d);
gogo(&gp->sched, 1);
}