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 ( ...@@ -10,7 +10,8 @@ import (
) )
// May run during STW, so write barriers are not allowed. // May run during STW, so write barriers are not allowed.
//go:nowritebarrier //
//go:nowritebarrierrec
func sighandler(_ureg *ureg, note *byte, gp *g) int { func sighandler(_ureg *ureg, note *byte, gp *g) int {
_g_ := getg() _g_ := getg()
var t sigTabT var t sigTabT
......
...@@ -30,7 +30,8 @@ func dumpregs(c *sigctxt) { ...@@ -30,7 +30,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} c := &sigctxt{info, ctxt}
......
...@@ -39,7 +39,8 @@ func dumpregs(c *sigctxt) { ...@@ -39,7 +39,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} c := &sigctxt{info, ctxt}
......
...@@ -35,7 +35,8 @@ func dumpregs(c *sigctxt) { ...@@ -35,7 +35,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} c := &sigctxt{info, ctxt}
......
...@@ -51,7 +51,8 @@ func dumpregs(c *sigctxt) { ...@@ -51,7 +51,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} c := &sigctxt{info, ctxt}
......
...@@ -54,7 +54,8 @@ func dumpregs(c *sigctxt) { ...@@ -54,7 +54,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} c := &sigctxt{info, ctxt}
......
...@@ -56,7 +56,8 @@ func dumpregs(c *sigctxt) { ...@@ -56,7 +56,8 @@ func dumpregs(c *sigctxt) {
var crashing int32 var crashing int32
// May run during STW, so write barriers are not allowed. // 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) { func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
_g_ := getg() _g_ := getg()
c := &sigctxt{info, ctxt} 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