From 1556c317f1eb3df4f41e9a69cb4192dc27d09d82 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 14 Jan 2016 16:43:40 -0500 Subject: [PATCH] runtime: use at least "system" traceback level for runtime tests While the default behavior of eliding runtime frames from tracebacks usually makes sense, this is not the case when you're trying to test the runtime itself. Fix this by forcing the traceback level to at least "system" in the runtime tests. This will specifically help with debugging issue #13645, which has proven remarkably resistant to reproduction outside of the build dashboard itself. Change-Id: I2a8356ba6c3c5badba8bb3330fc527357ec0d296 Reviewed-on: https://go-review.googlesource.com/18648 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Alex Brainman --- src/runtime/export_test.go | 8 ++++++++ src/runtime/runtime_test.go | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go index 6a4eae607a..5400c1d14e 100644 --- a/src/runtime/export_test.go +++ b/src/runtime/export_test.go @@ -163,3 +163,11 @@ var TestingAssertE2I2GC = &testingAssertE2I2GC var TestingAssertE2T2GC = &testingAssertE2T2GC var ForceGCPeriod = &forcegcperiod + +// SetTracebackEnv is like runtime/debug.SetTraceback, but it raises +// the "environment" traceback level, so later calls to +// debug.SetTraceback (e.g., from testing timeouts) can't lower it. +func SetTracebackEnv(level string) { + setTraceback(level) + traceback_env = traceback_cache +} diff --git a/src/runtime/runtime_test.go b/src/runtime/runtime_test.go index 75fc9bcb84..664c1180c4 100644 --- a/src/runtime/runtime_test.go +++ b/src/runtime/runtime_test.go @@ -12,6 +12,13 @@ import ( "unsafe" ) +func init() { + // We're testing the runtime, so make tracebacks show things + // in the runtime. This only raises the level, so it won't + // override GOTRACEBACK=crash from the user. + SetTracebackEnv("system") +} + var errf error func errfn() error { -- 2.50.0