aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Brainman <alex.brainman@gmail.com>2015-07-06 10:34:01 +1000
committerAlex Brainman <alex.brainman@gmail.com>2015-07-11 07:02:57 +0000
commitd5004ee69e117936890bf85b924c38f3bb505a6d (patch)
tree5e7922d952aff287d3bae66c8b3417f93079e82a /src
parent8b221092b9a9664918c28a76b109786956e0057d (diff)
downloadgo-d5004ee69e117936890bf85b924c38f3bb505a6d.tar.xz
runtime: use AddVectoredContinueHandler on Windows XP amd64
Recent change (CL 10370) unexpectedly broke TestRaiseException on Windows XP amd64. I still do not know why. But reverting old CL 8165 fixes the problem. This effectively makes Windows XP amd64 use AddVectoredContinueHandler instead of SetUnhandledExceptionFilter for exception handling. That is what we do for all recent Windows versions too. Fixes #11481 Change-Id: If2e8037711f05bf97e3c69f5a8d86af67c58f6fc Reviewed-on: https://go-review.googlesource.com/11888 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Daniel Theophanes <kardianos@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/runtime/os1_windows.go8
-rw-r--r--src/runtime/signal_windows.go8
2 files changed, 2 insertions, 14 deletions
diff --git a/src/runtime/os1_windows.go b/src/runtime/os1_windows.go
index bc472d0de9..f608b4ad80 100644
--- a/src/runtime/os1_windows.go
+++ b/src/runtime/os1_windows.go
@@ -26,7 +26,6 @@ import (
//go:cgo_import_dynamic runtime._GetStdHandle GetStdHandle%1 "kernel32.dll"
//go:cgo_import_dynamic runtime._GetSystemInfo GetSystemInfo%1 "kernel32.dll"
//go:cgo_import_dynamic runtime._GetThreadContext GetThreadContext%2 "kernel32.dll"
-//go:cgo_import_dynamic runtime._GetVersion GetVersion%0 "kernel32.dll"
//go:cgo_import_dynamic runtime._LoadLibraryW LoadLibraryW%1 "kernel32.dll"
//go:cgo_import_dynamic runtime._LoadLibraryA LoadLibraryA%1 "kernel32.dll"
//go:cgo_import_dynamic runtime._NtWaitForSingleObject NtWaitForSingleObject%3 "ntdll.dll"
@@ -68,7 +67,6 @@ var (
_GetStdHandle,
_GetSystemInfo,
_GetThreadContext,
- _GetVersion,
_LoadLibraryW,
_LoadLibraryA,
_NtWaitForSingleObject,
@@ -138,12 +136,6 @@ const (
currentThread = ^uintptr(1) // -2 = current thread
)
-func getVersion() (major, minor byte) {
- v := uint32(stdcall0(_GetVersion))
- low := uint16(v)
- return byte(low), byte(low >> 8)
-}
-
// in sys_windows_386.s and sys_windows_amd64.s
func externalthreadhandler()
diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go
index b2fce53534..5e17f747bd 100644
--- a/src/runtime/signal_windows.go
+++ b/src/runtime/signal_windows.go
@@ -26,14 +26,10 @@ func firstcontinuetramp()
func lastcontinuetramp()
func initExceptionHandler() {
- major, _ := getVersion()
stdcall2(_AddVectoredExceptionHandler, 1, funcPC(exceptiontramp))
- if _AddVectoredContinueHandler == nil || unsafe.Sizeof(&_AddVectoredContinueHandler) == 4 || major < 6 {
+ if _AddVectoredContinueHandler == nil || unsafe.Sizeof(&_AddVectoredContinueHandler) == 4 {
// use SetUnhandledExceptionFilter for windows-386 or
- // if VectoredContinueHandler is unavailable or
- // if running windows-amd64 v5. V5 appears to fail to
- // call the continue handlers if windows error reporting dialog
- // is disabled.
+ // if VectoredContinueHandler is unavailable.
// note: SetUnhandledExceptionFilter handler won't be called, if debugging.
stdcall1(_SetUnhandledExceptionFilter, funcPC(lastcontinuetramp))
} else {