mirror of https://github.com/golang/go.git
runtime: syscall_forkx on Solaris can return error on success
The syscall_forkx function returns the value of errno even on success. This can be a problem when using cgo where an atfork handler might be registered; if the atfork handler does something which causes errno to be set the caller of syscall_forkx can be misled into thinking the fork has failed. This causes the various exec functions in the runtime package to hang.
Change-Id: Ia1842179226078a0cbbea33d541aa1187dc47f68
GitHub-Last-Rev: 4dc4db75c8
GitHub-Pull-Request: golang/go#36076
Reviewed-on: https://go-review.googlesource.com/c/go/+/210742
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
9641acd653
commit
a1a67e6312
|
|
@ -142,6 +142,9 @@ func syscall_forkx(flags uintptr) (pid uintptr, err uintptr) {
|
|||
args: uintptr(unsafe.Pointer(&flags)),
|
||||
}
|
||||
asmcgocall(unsafe.Pointer(&asmsysvicall6x), unsafe.Pointer(&call))
|
||||
if int(call.r1) != -1 {
|
||||
call.err = 0
|
||||
}
|
||||
return call.r1, call.err
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue