]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: zero pointer-looking scalararg values
authorKeith Randall <khr@golang.org>
Tue, 7 Oct 2014 22:21:00 +0000 (15:21 -0700)
committerKeith Randall <khr@golang.org>
Tue, 7 Oct 2014 22:21:00 +0000 (15:21 -0700)
I have a CL which at every gc looks through data and bss
sections for nonpointer data (according to gc maps) that
looks like a pointer.  These are potential missing roots.

The only thing it finds are begnign, storing stack pointers
into m0.scalararg[1] and never cleaning them up.  Let's
clean them up now so the test CL passes all.bash cleanly.

The test CL can't be checked in because we might store
pointer-looking things in nonpointer data by accident.

LGTM=iant
R=golang-codereviews, iant, khr
CC=golang-codereviews
https://golang.org/cl/153210043

src/runtime/panic.c

index 1cd0aa865406ef73512f2d6c0c9a7ef55cbda110..55ad80e9bcd36bbb1392d243bca0eba03295b8c3 100644 (file)
@@ -31,6 +31,7 @@ runtime·deferproc_m(void)
        argp = g->m->scalararg[1];
        callerpc = g->m->scalararg[2];
        g->m->ptrarg[0] = nil;
+       g->m->scalararg[1] = 0;
 
        d = runtime·newdefer(siz);
        d->fn = fn;
@@ -131,6 +132,7 @@ runtime·dopanic_m(void)
        g->m->ptrarg[0] = nil;
        pc = g->m->scalararg[0];
        sp = g->m->scalararg[1];
+       g->m->scalararg[1] = 0;
        if(gp->sig != 0)
                runtime·printf("[signal %x code=%p addr=%p pc=%p]\n",
                        gp->sig, gp->sigcode0, gp->sigcode1, gp->sigpc);