aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Finkel <david.finkel@gmail.com>2026-03-04 16:34:24 -0500
committerGopher Robot <gobot@golang.org>2026-03-10 20:06:24 -0700
commit3694f3369276d072d3eccd03b1855b18d3ecee18 (patch)
tree12197149c3df09e26d3c305592ff129aebc71d40 /src
parent38ac6577cb8cf1ad6cb86cc9a0b6a76276932a79 (diff)
downloadgo-3694f3369276d072d3eccd03b1855b18d3ecee18.tar.xz
runtime: GODEBUG=tracebacklabels=1 for 1.27+
https://go.dev/cl/742580 updated the goroutine label format in tracebacks to only quote the values under some circumstances, and use a more broadly acceptable format. Flip the GODEBUG=tracebacklabels default for go 1.27+ modules. Notably, tracebacklabels is marked as Opaque to avoid some diciness in maintaining a usage metric in signal handlers, etc. (where mutex acquisition may be problematic) Also, update the go 1.27 release notes to call out the new feature. Updates #76349 Change-Id: Iedd3f6b17d83e99da20365b952a565022d20ff13 Reviewed-on: https://go-review.googlesource.com/c/go/+/751580 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Alan Donovan <adonovan@google.com> Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Mark Freeman <markfreeman@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/internal/godebugs/table.go4
-rw-r--r--src/runtime/runtime1.go2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go
index 5e33a0b0f3..7ddfad14ea 100644
--- a/src/internal/godebugs/table.go
+++ b/src/internal/godebugs/table.go
@@ -68,6 +68,10 @@ var All = []Info{
{Name: "tlssecpmlkem", Package: "crypto/tls", Changed: 26, Old: "0", Opaque: true},
{Name: "tlssha1", Package: "crypto/tls", Changed: 25, Old: "1"},
{Name: "tlsunsafeekm", Package: "crypto/tls", Changed: 22, Old: "1"},
+ // Mark tracebacklabels as Opaque so we don't generate a metric that we can't increment.
+ // IncNonDefault uses a sync.Once, which involves sync.Mutex, and is not safe from a signal handler.
+ // (Tracebacks are generated in signal-handlers.)
+ {Name: "tracebacklabels", Package: "runtime", Changed: 27, Old: "0", Opaque: true},
{Name: "updatemaxprocs", Package: "runtime", Changed: 25, Old: "0"},
{Name: "urlmaxqueryparams", Package: "net/url", Changed: 24, Old: "0"},
{Name: "urlstrictcolons", Package: "net/url", Changed: 26, Old: "0"},
diff --git a/src/runtime/runtime1.go b/src/runtime/runtime1.go
index d5bce17563..10754eee1c 100644
--- a/src/runtime/runtime1.go
+++ b/src/runtime/runtime1.go
@@ -398,7 +398,7 @@ var dbgvars = []*dbgVar{
{name: "traceallocfree", atomic: &debug.traceallocfree},
{name: "tracecheckstackownership", value: &debug.traceCheckStackOwnership},
{name: "tracebackancestors", value: &debug.tracebackancestors},
- {name: "tracebacklabels", atomic: &debug.tracebacklabels, def: 0},
+ {name: "tracebacklabels", atomic: &debug.tracebacklabels, def: 1},
{name: "tracefpunwindoff", value: &debug.tracefpunwindoff},
{name: "updatemaxprocs", value: &debug.updatemaxprocs, def: 1},
}