Commit e126f30a authored by Austin Clements's avatar Austin Clements

runtime: recursively disallow write barriers in sighandler

sighandler may run during STW, so write barriers are not allowed.

Change-Id: Icdf46be10ea296fd87e73ab56ebb718c5d3c97ac
Reviewed-on: https://go-review.googlesource.com/17007Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
parent b790ad5a
......@@ -10,7 +10,8 @@ import (
)
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(_ureg *ureg, note *byte, gp *g) int {
_g_ := getg()
var t sigTabT
......
......@@ -30,7 +30,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
......@@ -39,7 +39,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
......@@ -35,7 +35,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
......@@ -51,7 +51,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
......@@ -54,7 +54,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
......@@ -56,7 +56,8 @@ func dumpregs(c *sigctxt) {
var crashing int32
// May run during STW, so write barriers are not allowed.
//go:nowritebarrier
//
//go:nowritebarrierrec
func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg()
c := &sigctxt{info, ctxt}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment