From: Andrew Gerrand Date: Tue, 12 Aug 2014 04:07:22 +0000 (+1000) Subject: [release-branch.go1.3] runtime: ignore exceptions from foreign threads. X-Git-Tag: go1.3.1~5 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c6f639cdf6e3739e25896447f8902899568b5402;p=gostls13.git [release-branch.go1.3] runtime: ignore exceptions from foreign threads. ««« 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 --- 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