diff options
author | Russ Cox <rsc@golang.org> | 2014-09-29 22:50:34 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-09-29 22:50:34 -0400 |
commit | fcfb7aaf2ed8ffbe22c7c40e8536523c4ae599cb (patch) | |
tree | 099f2fef6ba76d5957e004596ab29f5e9b7b1c4e | |
parent | ca70c918920b26ae1b88afb7d7a82748677d354f (diff) | |
download | go-fcfb7aaf2ed8ffbe22c7c40e8536523c4ae599cb.tar.gz go-fcfb7aaf2ed8ffbe22c7c40e8536523c4ae599cb.zip |
[release-branch.go1.3] runtime: fix GOTRACEBACK reading on Windows, Plan 9
Only Unix was resetting the traceback_cache variable
after initializing the environment. Reset it on all systems
by resetting in parsedebugvars.
Fixes #8813.
LGTM=adg, alex.brainman
R=golang-codereviews, adg, alex.brainman
CC=golang-codereviews, iant, r
https://golang.org/cl/152760043
-rw-r--r-- | src/pkg/runtime/runtime.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/pkg/runtime/runtime.c b/src/pkg/runtime/runtime.c index 3a4f7199ed..3b322e0def 100644 --- a/src/pkg/runtime/runtime.c +++ b/src/pkg/runtime/runtime.c @@ -138,8 +138,6 @@ runtime·goenvs_unix(void) syscall·envs.array = (byte*)s; syscall·envs.len = n; syscall·envs.cap = n; - - traceback_cache = ~(uint32)0; } int32 @@ -343,6 +341,16 @@ runtime·parsedebugvars(void) { byte *p; intgo i, n; + bool tmp; + + // gotraceback caches the GOTRACEBACK setting in traceback_cache. + // gotraceback can be called before the environment is available. + // traceback_cache must be reset after the environment is made + // available, in order for the environment variable to take effect. + // The code is fixed differently in Go 1.4. + // This is a limited fix for Go 1.3.3. + traceback_cache = ~(uint32)0; + runtime·gotraceback(&tmp); p = runtime·getenv("GODEBUG"); if(p == nil) |