When receiving a signal during fuex processing, the signal is not processed.

This commit is contained in:
Tomoki Shirasawa
2017-03-21 20:37:17 +09:00
parent eca4018ecb
commit 034d10b185
2 changed files with 6 additions and 2 deletions

View File

@ -1297,6 +1297,9 @@ done:
sched_wakeup_thread(tthread, PS_STOPPED);
tthread->proc->status = PS_RUNNING;
}
else {
sched_wakeup_thread(tthread, PS_INTERRUPTIBLE);
}
}
}
release_thread(tthread);

View File

@ -8595,6 +8595,7 @@ long syscall(int num, ihk_mc_user_context_t *ctx)
#ifdef TRACK_SYSCALLS
uint64_t t_s;
#endif // TRACK_SYSCALLS
struct thread *thread = cpu_local_var(current);
set_cputime(1);
if(cpu_local_var(current)->proc->status == PS_EXITED &&
@ -8656,8 +8657,8 @@ long syscall(int num, ihk_mc_user_context_t *ctx)
l = syscall_generic_forwarding(num, ctx);
}
if (num != __NR_sched_yield &&
num != __NR_futex) {
if (!list_empty(&thread->sigpending) ||
!list_empty(&thread->sigcommon->sigpending)) {
check_signal(l, NULL, num);
}