mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: call throw on systemstack in exitsyscall
If exitsyscall tries to grow the stack it will panic, but throw calls print, which can grow the stack. Move the two bare throws in exitsyscall to the system stack. Updates #21431. Change-Id: I5b29da5d34ade908af648a12075ed327a864476c Reviewed-on: https://go-review.googlesource.com/79517 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
c6c0f47e92
commit
09739d2850
1 changed files with 6 additions and 2 deletions
|
|
@ -2939,7 +2939,9 @@ func exitsyscall(dummy int32) {
|
|||
oldp := _g_.m.p.ptr()
|
||||
if exitsyscallfast() {
|
||||
if _g_.m.mcache == nil {
|
||||
throw("lost mcache")
|
||||
systemstack(func() {
|
||||
throw("lost mcache")
|
||||
})
|
||||
}
|
||||
if trace.enabled {
|
||||
if oldp != _g_.m.p.ptr() || _g_.m.syscalltick != _g_.m.p.ptr().syscalltick {
|
||||
|
|
@ -2986,7 +2988,9 @@ func exitsyscall(dummy int32) {
|
|||
mcall(exitsyscall0)
|
||||
|
||||
if _g_.m.mcache == nil {
|
||||
throw("lost mcache")
|
||||
systemstack(func() {
|
||||
throw("lost mcache")
|
||||
})
|
||||
}
|
||||
|
||||
// Scheduler returned, so we're allowed to run now.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue