mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: don't grow the stack on sigpanic if throwsplit
Currently, if a _SigPanic signal arrives in a throwsplit context, nothing is stopping the runtime from injecting a call to sigpanic that may attempt to grow the stack. This will fail and, in turn, mask the real problem. Fix this by checking for throwsplit in the signal handler itself before injecting the sigpanic call. Updates #21431, where this problem is likely masking the real problem. Change-Id: I64b61ff08e8c4d6f6c0fb01315d7d5e66bf1d3e2 Reviewed-on: https://go-review.googlesource.com/87595 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
9b49ac0366
commit
9483a0bc23
5 changed files with 25 additions and 0 deletions
|
|
@ -752,6 +752,9 @@ func dopanic_m(gp *g, pc, sp uintptr) {
|
|||
exit(2)
|
||||
}
|
||||
|
||||
// canpanic returns false if a signal should throw instead of
|
||||
// panicking.
|
||||
//
|
||||
//go:nosplit
|
||||
func canpanic(gp *g) bool {
|
||||
// Note that g is m->gsignal, different from gp.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue