SIGCONT: don't terminate process

Change-Id: Ib959a9e5341fda37bd055724ecb9319a469b7420
Refs: #1410
This commit is contained in:
Tomoki Shirasawa
2019-11-14 11:35:01 +09:00
committed by Masamichi Takagi
parent adb6cce3ce
commit 4b252a990f
11 changed files with 1939 additions and 5 deletions

View File

@ -1523,7 +1523,9 @@ check_sig_pending_thread(struct thread *thread)
sig++, x >>= 1)
;
k = thread->sigcommon->action + sig - 1;
if ((sig != SIGCHLD && sig != SIGURG) ||
if ((sig != SIGCHLD &&
sig != SIGURG &&
sig != SIGCONT) ||
(k->sa.sa_handler != SIG_IGN &&
k->sa.sa_handler != NULL)) {
if (!(pending->sigmask.__val[0] & w)) {
@ -1532,6 +1534,7 @@ check_sig_pending_thread(struct thread *thread)
found = 1;
if (sig != SIGCHLD &&
sig != SIGURG &&
sig != SIGCONT &&
!k->sa.sa_handler) {
found = 2;
break;
@ -1819,7 +1822,9 @@ done:
if ((sig != SIGKILL && (tthread->ptrace & PT_TRACED)) ||
(k->sa.sa_handler != SIG_IGN &&
(k->sa.sa_handler != NULL ||
(sig != SIGCHLD && sig != SIGURG)))) {
(sig != SIGCHLD &&
sig != SIGURG &&
sig != SIGCONT)))) {
struct sig_pending *pending = NULL;
if (sig < SIGRTMIN) { // SIGRTMIN - SIGRTMAX
list_for_each_entry(pending, head, list){