From c6f639cdf6e3739e25896447f8902899568b5402 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Tue, 12 Aug 2014 14:07:22 +1000 Subject: [release-branch.go1.3] runtime: ignore exceptions from foreign threads. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ««« CL 104200046 / 14683b1cf2cc runtime: ignore exceptions from foreign threads. Fixes #8224. LGTM=alex.brainman, rsc R=alex.brainman, rsc, dave CC=golang-codereviews https://golang.org/cl/104200046 »»» LGTM=alex.brainman, minux R=rsc, alex.brainman, minux CC=golang-codereviews https://golang.org/cl/126010043 --- src/pkg/runtime/sys_windows_386.s | 5 +++++ src/pkg/runtime/sys_windows_amd64.s | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/pkg/runtime/sys_windows_386.s b/src/pkg/runtime/sys_windows_386.s index e0c0631cfc..576831d2cc 100644 --- a/src/pkg/runtime/sys_windows_386.s +++ b/src/pkg/runtime/sys_windows_386.s @@ -88,6 +88,10 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0-0 // fetch g get_tls(DX) + CMPL DX, $0 + JNE 3(PC) + MOVL $0, AX // continue + JMP done MOVL m(DX), AX CMPL AX, $0 JNE 2(PC) @@ -100,6 +104,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0-0 CALL runtime·sighandler(SB) // AX is set to report result back to Windows +done: // restore callee-saved registers MOVL 24(SP), DI MOVL 20(SP), SI diff --git a/src/pkg/runtime/sys_windows_amd64.s b/src/pkg/runtime/sys_windows_amd64.s index 94845903ed..d161be6a50 100644 --- a/src/pkg/runtime/sys_windows_amd64.s +++ b/src/pkg/runtime/sys_windows_amd64.s @@ -120,6 +120,10 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0-0 // fetch g get_tls(DX) + CMPQ DX, $0 + JNE 3(PC) + MOVQ $0, AX // continue + JMP done MOVQ m(DX), AX CMPQ AX, $0 JNE 2(PC) @@ -132,6 +136,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0-0 CALL runtime·sighandler(SB) // AX is set to report result back to Windows +done: // restore registers as required for windows callback MOVQ 24(SP), R15 MOVQ 32(SP), R14 -- cgit v1.2.3-54-g00ecf