]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: call symtabinit earlier
authorAnthony Martin <ality@pbrane.org>
Thu, 13 Mar 2014 02:42:58 +0000 (19:42 -0700)
committerAnthony Martin <ality@pbrane.org>
Thu, 13 Mar 2014 02:42:58 +0000 (19:42 -0700)
Otherwise, we won't get a stack trace in some of the early init.

Here's one example:

        http://build.golang.org/log/a96d10f6aee1fa3e3ae51f41da46d414a7ab02de

After walking the stack by hand in acid, I was able to determine
that the stackalloc inside mpreinit was causing the throw.

LGTM=rsc
R=rsc, dvyukov
CC=golang-codereviews
https://golang.org/cl/72450044

src/pkg/runtime/proc.c

index eb7dfe4f84d8530401571910947e3a212758cc00..d3ad7401364e751b7e703d8f46ed6a0cb6c58a44 100644 (file)
@@ -146,6 +146,7 @@ runtime·schedinit(void)
        runtime·sched.maxmcount = 10000;
        runtime·precisestack = true; // haveexperiment("precisestack");
 
+       runtime·symtabinit();
        runtime·mallocinit();
        mcommoninit(m);
        
@@ -159,9 +160,6 @@ runtime·schedinit(void)
        runtime·goenvs();
        runtime·parsedebugvars();
 
-       // Allocate internal symbol table representation now, we need it for GC anyway.
-       runtime·symtabinit();
-
        runtime·sched.lastpoll = runtime·nanotime();
        procs = 1;
        p = runtime·getenv("GOMAXPROCS");