this was simply a case of saving the state in the wrong place.
if (attr._a_sched) {
do_sched = new->startlock[0] = 1;
__syscall(SYS_rt_sigprocmask, SIG_BLOCK,
if (attr._a_sched) {
do_sched = new->startlock[0] = 1;
__syscall(SYS_rt_sigprocmask, SIG_BLOCK,
- SIGALL_SET, self->sigmask, _NSIG/8);
+ SIGALL_SET, new->sigmask, _NSIG/8);
}
new->unblock_cancel = self->cancel;
new->canary = self->canary;
}
new->unblock_cancel = self->cancel;
new->canary = self->canary;