aboutsummaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorDmitriy Vyukov <dvyukov@google.com>2013-02-21 21:59:46 +0400
committerDmitriy Vyukov <dvyukov@google.com>2013-02-21 21:59:46 +0400
commit94fab3cad33b7d5eb7422d319fd88b2db9896a75 (patch)
treebf6df42b79a609ae1f042297b0b07d4d0e17e088 /src/pkg
parent0cdc0b3b78dcb029bc4951637a0d9be11ee0d7e5 (diff)
downloadgo-94fab3cad33b7d5eb7422d319fd88b2db9896a75.tar.xz
runtime: fix heap corruption
R=golang-dev, rsc CC=golang-dev https://golang.org/cl/7397049
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/runtime/proc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c
index 5c36ddf745..9909182b6b 100644
--- a/src/pkg/runtime/proc.c
+++ b/src/pkg/runtime/proc.c
@@ -972,6 +972,12 @@ runtime·newextram(void)
mp->locked = LockInternal;
mp->lockedg = gp;
gp->lockedm = mp;
+ // put on allg for garbage collector
+ if(runtime·lastg == nil)
+ runtime·allg = gp;
+ else
+ runtime·lastg->alllink = gp;
+ runtime·lastg = gp;
schedunlock();
// Add m to the extra list.