diff options
| author | Mikio Hara <mikioh.mikioh@gmail.com> | 2016-09-28 17:26:12 +0900 |
|---|---|---|
| committer | Mikio Hara <mikioh.mikioh@gmail.com> | 2016-09-28 14:45:06 +0000 |
| commit | a0d330f1ddeaa55cbd35191814546fd98e09a117 (patch) | |
| tree | 29b3172b2edf9cb07b68284861fcc92bcf848986 /src | |
| parent | eb268cb321edf6e2bbaa832acb2e61db6b081f98 (diff) | |
| download | go-a0d330f1ddeaa55cbd35191814546fd98e09a117.tar.xz | |
runtime, runtime/cgo: revert CL 18814; don't drop signal stack in new thread on dragonfly
This change reverts CL 18814 which is a workaroud for older DragonFly
BSD kernels, and fixes #13945 and #13947 in a more general way the
same as other platforms except NetBSD.
This is a followup to CL 29491.
Updates #16329.
Change-Id: I771670bc672c827f2b3dbc7fd7417c49897cb991
Reviewed-on: https://go-review.googlesource.com/29971
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/cgo/gcc_dragonfly_amd64.c | 12 | ||||
| -rw-r--r-- | src/runtime/sys_dragonfly_amd64.s | 12 |
2 files changed, 0 insertions, 24 deletions
diff --git a/src/runtime/cgo/gcc_dragonfly_amd64.c b/src/runtime/cgo/gcc_dragonfly_amd64.c index b534dccf79..e532ad69d6 100644 --- a/src/runtime/cgo/gcc_dragonfly_amd64.c +++ b/src/runtime/cgo/gcc_dragonfly_amd64.c @@ -56,7 +56,6 @@ static void* threadentry(void *v) { ThreadStart ts; - stack_t ss; ts = *(ThreadStart*)v; free(v); @@ -66,17 +65,6 @@ threadentry(void *v) */ setg_gcc((void*)ts.g); - // On DragonFly, a new thread inherits the signal stack of the - // creating thread. That confuses minit, so we remove that - // signal stack here before calling the regular mstart. It's - // a bit baroque to remove a signal stack here only to add one - // in minit, but it's a simple change that keeps DragonFly - // working like other OS's. At this point all signals are - // blocked, so there is no race. - memset(&ss, 0, sizeof ss); - ss.ss_flags = SS_DISABLE; - sigaltstack(&ss, nil); - crosscall_amd64(ts.fn); return nil; } diff --git a/src/runtime/sys_dragonfly_amd64.s b/src/runtime/sys_dragonfly_amd64.s index 76dff10670..bc16bdbbde 100644 --- a/src/runtime/sys_dragonfly_amd64.s +++ b/src/runtime/sys_dragonfly_amd64.s @@ -51,18 +51,6 @@ TEXT runtime·lwp_start(SB),NOSPLIT,$0 MOVQ R13, g_m(DI) MOVQ DI, g(CX) - // On DragonFly, a new thread inherits the signal stack of the - // creating thread. That confuses minit, so we remove that - // signal stack here before calling the regular mstart. It's - // a bit baroque to remove a signal stack here only to add one - // in minit, but it's a simple change that keeps DragonFly - // working like other OS's. At this point all signals are - // blocked, so there is no race. - SUBQ $8, SP - MOVQ $0, 0(SP) - CALL runtime·signalstack(SB) - ADDQ $8, SP - CALL runtime·stackcheck(SB) CALL runtime·mstart(SB) |
