summaryrefslogtreecommitdiffstats
path: root/lib/libthr
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2008-03-16 03:22:38 +0000
committerdavidxu <davidxu@FreeBSD.org>2008-03-16 03:22:38 +0000
commit3da38e35b432b5fa7610547f1a01f367bdae5dbf (patch)
treec86bc37b594d6bf8e83b23651ce7555a0bbc637a /lib/libthr
parentf924bfc1c5932f20f0ee3006632ee0a06658cd6a (diff)
downloadFreeBSD-src-3da38e35b432b5fa7610547f1a01f367bdae5dbf.zip
FreeBSD-src-3da38e35b432b5fa7610547f1a01f367bdae5dbf.tar.gz
Actually delete SIGCANCEL mask for suspended thread, so the signal will not
be masked when it is resumed.
Diffstat (limited to 'lib/libthr')
-rw-r--r--lib/libthr/thread/thr_create.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/libthr/thread/thr_create.c b/lib/libthr/thread/thr_create.c
index 0dc1436..6eb3693 100644
--- a/lib/libthr/thread/thr_create.c
+++ b/lib/libthr/thread/thr_create.c
@@ -168,6 +168,7 @@ _pthread_create(pthread_t * thread, const pthread_attr_t * attr,
SIGDELSET(set, SIGTRAP);
__sys_sigprocmask(SIG_SETMASK, &set, &oset);
new_thread->sigmask = oset;
+ SIGDELSET(new_thread->sigmask, SIGCANCEL);
}
ret = thr_new(&param, sizeof(param));
@@ -181,10 +182,8 @@ _pthread_create(pthread_t * thread, const pthread_attr_t * attr,
ret = EAGAIN;
}
- if (create_suspended) {
+ if (create_suspended)
__sys_sigprocmask(SIG_SETMASK, &oset, NULL);
- SIGDELSET(oset, SIGCANCEL);
- }
if (ret != 0) {
if (!locked)
OpenPOWER on IntegriCloud