]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: recursively disallow write barriers in sighandler
authorAustin Clements <austin@google.com>
Tue, 17 Nov 2015 22:20:38 +0000 (17:20 -0500)
committerAustin Clements <austin@google.com>
Tue, 24 Nov 2015 19:36:55 +0000 (19:36 +0000)
sighandler may run during STW, so write barriers are not allowed.

Change-Id: Icdf46be10ea296fd87e73ab56ebb718c5d3c97ac
Reviewed-on: https://go-review.googlesource.com/17007
Reviewed-by: Russ Cox <rsc@golang.org>
src/runtime/os3_plan9.go
src/runtime/signal_386.go
src/runtime/signal_amd64x.go
src/runtime/signal_arm.go
src/runtime/signal_arm64.go
src/runtime/signal_mips64x.go
src/runtime/signal_ppc64x.go

index f660cc72a7606a8f94b1f9354c5f6b4db87c03d8..edd66c59b33c3496f56f376a1ad5c398f7a6de8d 100644 (file)
@@ -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
index 90d69ee389acac0051926b29a6936a7c85c7d608..3ea0656e656f71901e35cede548fb65b96b37f44 100644 (file)
@@ -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}
index df317e3835cc06efb10c56fc9eff34b0df18f35d..ad3187337a4cf83aa5c758ef812f3ea0e0180e9a 100644 (file)
@@ -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}
index c00e43d0c24e2508631a5161c826e8a2a80cce52..e8d19a454d8c94df093a09951831aadd95fd953b 100644 (file)
@@ -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}
index 96a4cb3dac7e036344698650a24dd44f88393ed5..2966ec0b20be1293dd4262f73c8e67a950e1fdd1 100644 (file)
@@ -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}
index 51598e8e5a9c54ff3193349306a25a453ce919bb..f30ff6e9e9e57f2f57f2be4604035b359b2f2712 100644 (file)
@@ -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}
index 774aa42c7717bd52f55ca627ef78539af8ac9595..e0c5f91e338a4cac5513161e88d9d05aa97ee371 100644 (file)
@@ -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}