Block signals explicitly during lwp creation since blocking via the context
doea not work.
This commit is contained in:
parent
8217c06992
commit
5855f16c14
3 changed files with 32 additions and 2 deletions
|
@ -1,9 +1,10 @@
|
|||
# $NetBSD: Makefile,v 1.49 2017/03/15 19:38:09 bsiegert Exp $
|
||||
# $NetBSD: Makefile,v 1.50 2017/04/19 21:27:31 christos Exp $
|
||||
|
||||
.include "version.mk"
|
||||
|
||||
DISTNAME= go${GO_VERSION}.src
|
||||
PKGNAME= go-${GO_VERSION}
|
||||
PKGREVISION= 1
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= https://storage.googleapis.com/golang/
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: distinfo,v 1.45 2017/04/09 08:23:43 wen Exp $
|
||||
$NetBSD: distinfo,v 1.46 2017/04/19 21:27:31 christos Exp $
|
||||
|
||||
SHA1 (go1.8.1.src.tar.gz) = 0c4b7116bd6b7cdc19bdcf8336c75eae4620907b
|
||||
RMD160 (go1.8.1.src.tar.gz) = c0251b667a9c34f9dd180aeb8c4c9dce5832b9eb
|
||||
|
@ -7,4 +7,5 @@ Size (go1.8.1.src.tar.gz) = 15331455 bytes
|
|||
SHA1 (patch-lib_time_update.bash) = bcf565b97ae7898a9e5cef7686fe42c69bc0bba1
|
||||
SHA1 (patch-misc_io_clangwrap.sh) = cd91c47ba0fe7b6eb8009dd261c0c26c7d581c29
|
||||
SHA1 (patch-src_crypto_x509_root__bsd.go) = 0eca1eafa967268ae9b224be4aeda347ebc91901
|
||||
SHA1 (patch-src_runtime_os__netbsd.go) = 561f53c084c5bff93171a411bebd79bebf1e3696
|
||||
SHA1 (patch-src_syscall_syscall__solaris.go) = 436371947897dcba574a6dfecc6bbcd04f6e25b2
|
||||
|
|
28
lang/go/patches/patch-src_runtime_os__netbsd.go
Normal file
28
lang/go/patches/patch-src_runtime_os__netbsd.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
# $NetBSD: patch-src_runtime_os__netbsd.go,v 1.1 2017/04/19 21:27:31 christos Exp $
|
||||
|
||||
--- src/runtime/os_netbsd.go.orig 2017-04-07 12:54:08.000000000 -0400
|
||||
+++ src/runtime/os_netbsd.go 2017-04-19 17:08:10.806553689 -0400
|
||||
@@ -167,13 +167,23 @@
|
||||
var uc ucontextt
|
||||
getcontext(unsafe.Pointer(&uc))
|
||||
|
||||
+ // XXX: _UC_SIGMASK does not seem to work here.
|
||||
+ // It would be nice if _UC_SIGMASK and _UC_STACK
|
||||
+ // worked so that we could do all the work setting
|
||||
+ // the sigmask and the stack here, instead of setting
|
||||
+ // the mask here and the stack in netbsdMstart
|
||||
+ // For now do the blocking manually.
|
||||
uc.uc_flags = _UC_SIGMASK | _UC_CPU
|
||||
uc.uc_link = nil
|
||||
uc.uc_sigmask = sigset_all
|
||||
|
||||
+ var oset sigset
|
||||
+ sigprocmask(_SIG_SETMASK, &sigset_all, &oset)
|
||||
+
|
||||
lwp_mcontext_init(&uc.uc_mcontext, stk, mp, mp.g0, funcPC(netbsdMstart))
|
||||
|
||||
ret := lwp_create(unsafe.Pointer(&uc), 0, unsafe.Pointer(&mp.procid))
|
||||
+ sigprocmask(_SIG_SETMASK, &oset, nil)
|
||||
if ret < 0 {
|
||||
print("runtime: failed to create new OS thread (have ", mcount()-1, " already; errno=", -ret, ")\n")
|
||||
if ret == -_EAGAIN {
|
Loading…
Reference in a new issue