mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: respect GOTRACEBACK for user-triggered runtime panics
The documentation for GOTRACEBACK says that "single" is the default where the stack trace for only a single routine is printed except that it prints all stack traces if: there is no current goroutine or the failure is internal to the run-time. In the runtime, there are two types of panics: throwTypeUser and throwTypeRuntime. The latter more clearly corresponds to a "failure [that] is internal to the run-time", while the former corresponds to a problem trigger due to a user mistake. Thus, a user-triggered panic (e.g., concurrent map access) should not result in a dump of all stack traces. Fixes #68019 Change-Id: I9b02f82535ddb9fd666f7158e2e4ee10f235646a Reviewed-on: https://go-review.googlesource.com/c/go/+/649535 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
a593ca9d65
commit
02d1f3a06b
1 changed files with 1 additions and 1 deletions
|
|
@ -39,7 +39,7 @@ func gotraceback() (level int32, all, crash bool) {
|
|||
gp := getg()
|
||||
t := atomic.Load(&traceback_cache)
|
||||
crash = t&tracebackCrash != 0
|
||||
all = gp.m.throwing >= throwTypeUser || t&tracebackAll != 0
|
||||
all = gp.m.throwing > throwTypeUser || t&tracebackAll != 0
|
||||
if gp.m.traceback != 0 {
|
||||
level = int32(gp.m.traceback)
|
||||
} else if gp.m.throwing >= throwTypeRuntime {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue