mirror of
https://github.com/golang/go
synced 2024-11-26 21:01:31 -07:00
runtime: fix final stack split in exitsyscall
exitsyscall should be recursively nosplit, but we don't have a way to annotate that right now (see #21314). There's exactly one remaining place where this is violated right now: exitsyscall -> casgstatus -> print. The other prints in casgstatus are wrapped in systemstack calls. This fixes the remaining print. Updates #21431 (in theory could fix it, but that would just indicate that we have a different G status-related crash and we've *never* seen that failure on the dashboard.) Change-Id: I9a5e8d942adce4a5c78cfc6b306ea5bda90dbd33 Reviewed-on: https://go-review.googlesource.com/79815 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Rick Hudson <rlh@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
2e1f07133d
commit
be589f8d2b
@ -782,8 +782,10 @@ func casgstatus(gp *g, oldval, newval uint32) {
|
||||
// _Grunning or _Grunning|_Gscan; either way,
|
||||
// we own gp.gcscanvalid, so it's safe to read.
|
||||
// gp.gcscanvalid must not be true when we are running.
|
||||
print("runtime: casgstatus ", hex(oldval), "->", hex(newval), " gp.status=", hex(gp.atomicstatus), " gp.gcscanvalid=true\n")
|
||||
throw("casgstatus")
|
||||
systemstack(func() {
|
||||
print("runtime: casgstatus ", hex(oldval), "->", hex(newval), " gp.status=", hex(gp.atomicstatus), " gp.gcscanvalid=true\n")
|
||||
throw("casgstatus")
|
||||
})
|
||||
}
|
||||
|
||||
// See http://golang.org/cl/21503 for justification of the yield delay.
|
||||
|
Loading…
Reference in New Issue
Block a user