From cfae35efa582eedb83f483b52fa35cf1269c562d Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Thu, 8 Jun 2017 15:56:53 +1000 Subject: [PATCH] syscall: make windows Exit call runtime.exit Both runtime.exit and syscall.Exit call Windows ExitProcess. But recently (CL 34616) runtime.exit was changed to ignore Windows CreateThread errors if ExitProcess is called. This CL adjusts syscall.Exit to do the same. Fixes #18253 (maybe) Change-Id: I6496c31b01e7c7d73b69c0b2ae33ed7fbe06736b Reviewed-on: https://go-review.googlesource.com/45115 TryBot-Result: Gobot Gobot Reviewed-by: Rob Pike Reviewed-by: Austin Clements --- src/runtime/syscall_windows.go | 6 ++++++ src/syscall/syscall_windows.go | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/runtime/syscall_windows.go b/src/runtime/syscall_windows.go index cd23b8da6b..ca8ea8b04f 100644 --- a/src/runtime/syscall_windows.go +++ b/src/runtime/syscall_windows.go @@ -207,3 +207,9 @@ func syscall_Syscall15(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, cgocall(asmstdcallAddr, unsafe.Pointer(c)) return c.r1, c.r2, c.err } + +//go:linkname syscall_exit syscall.Exit +//go:nosplit +func syscall_exit(code int) { + exit(int32(code)) +} diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go index 551a8c0dd3..4619ce2a2b 100644 --- a/src/syscall/syscall_windows.go +++ b/src/syscall/syscall_windows.go @@ -236,7 +236,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { // syscall interface implementation for other packages -func Exit(code int) { ExitProcess(uint32(code)) } +// Implemented in ../runtime/syscall_windows.go. +func Exit(code int) func makeInheritSa() *SecurityAttributes { var sa SecurityAttributes