mirror of
https://github.com/golang/go
synced 2024-11-18 10:04:43 -07:00
runtime: fix stack split detection around fork
If runtime_BeforeFork splits stack, it will unsplit it with spoiled g->stackguard. It leads to check failure in oldstack: fatal error: stackfree: bad fixed size runtime stack: runtime.throw(0xadf3cd) runtime.stackfree(0xc208040480, 0xfffffffffffff9dd, 0x1b00fa8) runtime.oldstack() runtime.lessstack() goroutine 311 [stack unsplit]: syscall.forkAndExecInChild(0xc20802eea0, 0xc208192c00, 0x5, 0x5, 0xc208072a80, ...) syscall.forkExec(0xc20802ed80, 0x54, 0xc2081ccb40, 0x4, 0x4, ...) Fixes #7567. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews, khr, rsc https://golang.org/cl/77340045
This commit is contained in:
parent
cb50277510
commit
1895014257
@ -1696,6 +1696,7 @@ exitsyscall0(G *gp)
|
||||
}
|
||||
|
||||
// Called from syscall package before fork.
|
||||
#pragma textflag NOSPLIT
|
||||
void
|
||||
syscall·runtime_BeforeFork(void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user