mirror of
https://github.com/golang/go
synced 2024-11-18 15:54:42 -07:00
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>
This commit is contained in:
parent
eb268cb321
commit
a0d330f1dd
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user