From fcfb7aaf2ed8ffbe22c7c40e8536523c4ae599cb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 29 Sep 2014 22:50:34 -0400 Subject: [PATCH] [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 --- src/pkg/runtime/runtime.c | 12 ++++++++++-- 1 file 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) -- 2.50.0