]> Cypherpunks repositories - gostls13.git/commit
runtime: preempt more aggressively when panicking
authorCherry Mui <cherryyz@google.com>
Thu, 30 Nov 2023 00:17:22 +0000 (19:17 -0500)
committerCherry Mui <cherryyz@google.com>
Wed, 31 Jan 2024 14:20:56 +0000 (14:20 +0000)
commit13766fe7d89c44bb45cfb33591b137553bda7c7d
tree153d09ea95d0a6e5ab9df01000d0a05ac00f4b4a
parentb32ec6c961182e5bca6ae8420d6aa1204d7d2821
runtime: preempt more aggressively when panicking

When we are crashing from an unrecovered panic, we freeze the
world, and print stack traces for all goroutines if GOTRACEBACK is
set to a high enough level. Freezing the world is best effort, so
there could still be goroutines that are not preempted, and so its
stack trace is unavailable and printed as "goroutine running on
other thread".

As we're crashing and not resuming execution on preempted
goroutines, we can make preemption more aggressive, preempting
cases that are not safe for resumption or stack scanning. This may
make goroutines more likely to be preempted in freezing the world
and have their stacks available.

Change-Id: Ie16269e2a05e007efa61368b695addc28d7a97ee
Reviewed-on: https://go-review.googlesource.com/c/go/+/546135
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com>
src/runtime/os_windows.go
src/runtime/preempt.go
src/runtime/signal_unix.go