aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pkg/runtime/mgc0.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/pkg/runtime/mgc0.c b/src/pkg/runtime/mgc0.c
index 276e70fd04..ac6a1fa40d 100644
--- a/src/pkg/runtime/mgc0.c
+++ b/src/pkg/runtime/mgc0.c
@@ -344,13 +344,12 @@ scanstack(G *gp)
// The goroutine is usually asleep (the world is stopped).
sp = gp->sched.sp;
- // The exception is that if gp->status == Gsyscall, the goroutine
- // is about to enter or might have just exited a system call, in
- // which case it may be executing code such as schedlock and
- // may have needed to start a new stack segment.
+ // The exception is that if the goroutine is about to enter or might
+ // have just exited a system call, it may be executing code such
+ // as schedlock and may have needed to start a new stack segment.
// Use the stack segment and stack pointer at the time of
- // the entersyscall.
- if(g->gcstack != nil) {
+ // the system call instead, since that won't change underfoot.
+ if(gp->gcstack != nil) {
stk = (Stktop*)gp->gcstack;
sp = gp->gcsp;
guard = gp->gcguard;