mirror of
https://github.com/golang/go
synced 2024-11-24 01:20:08 -07:00
runtime: make sure to properly park before going to sleep in Windows ConsoleControlHandler
This change avoids the program intermittently hanging on windows/arm64 after getting a signal for which the ConsoleControlHandler can not return. Fixes #49458 Change-Id: Ie28f0f437c7e0f9634b6b3e29dc6cdebd5d996f6 Reviewed-on: https://go-review.googlesource.com/c/go/+/364556 Trust: Patrik Nyblom <pnyb@google.com> Trust: Dan Scales <danscales@google.com> Run-TryBot: Patrik Nyblom <pnyb@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
4083a6f377
commit
54b9cb8037
@ -1194,8 +1194,10 @@ func ctrlHandler(_type uint32) uintptr {
|
||||
if sigsend(s) {
|
||||
if s == _SIGTERM {
|
||||
// Windows terminates the process after this handler returns.
|
||||
// Block indefinitely to give signal handlers a chance to clean up.
|
||||
stdcall1(_Sleep, uintptr(_INFINITE))
|
||||
// Block indefinitely to give signal handlers a chance to clean up,
|
||||
// but make sure to be properly parked first, so the rest of the
|
||||
// program can continue executing.
|
||||
block()
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user