diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c index 679fd3fd..279fad04 100644 --- a/arch/arm64/kernel/syscall.c +++ b/arch/arm64/kernel/syscall.c @@ -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){ diff --git a/arch/x86_64/kernel/syscall.c b/arch/x86_64/kernel/syscall.c index f784bebd..acca86d2 100644 --- a/arch/x86_64/kernel/syscall.c +++ b/arch/x86_64/kernel/syscall.c @@ -1067,7 +1067,9 @@ getsigpending(struct thread *thread, int delflag){ for(x = pending->sigmask.__val[0], sig = 0; x; sig++, x >>= 1); k = thread->sigcommon->action + sig - 1; if(delflag || - (sig != SIGCHLD && sig != SIGURG) || + (sig != SIGCHLD && + sig != SIGURG && + sig != SIGCONT) || (k->sa.sa_handler != (void *)1 && k->sa.sa_handler != NULL)){ if(!(pending->sigmask.__val[0] & w)){ @@ -1214,7 +1216,9 @@ check_sig_pending_thread(struct thread *thread) for (x = pending->sigmask.__val[0], sig = 0; x; 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 != (void *)1 && k->sa.sa_handler != NULL)) { if (!(pending->sigmask.__val[0] & w)) { @@ -1223,6 +1227,7 @@ check_sig_pending_thread(struct thread *thread) found = 1; if (sig != SIGCHLD && sig != SIGURG && + sig != SIGCONT && !k->sa.sa_handler) { found = 2; break; @@ -1546,7 +1551,7 @@ done: if ((sig != SIGKILL && (tthread->ptrace & PT_TRACED)) || (k->sa.sa_handler != (void *)1 && (k->sa.sa_handler != NULL || - (sig != SIGCHLD && sig != SIGURG)))) { + (sig != SIGCHLD && sig != SIGURG && sig != SIGCONT)))) { struct sig_pending *pending = NULL; if (sig < 33) { // SIGRTMIN - SIGRTMAX list_for_each_entry(pending, head, list){ diff --git a/test/issues/1410+1420/C1410.sh b/test/issues/1410+1420/C1410.sh new file mode 100644 index 00000000..8b51d9a3 --- /dev/null +++ b/test/issues/1410+1420/C1410.sh @@ -0,0 +1,31 @@ +#!/bin/sh +uname -m +USELTP=1 +USEOSTEST=0 +BOOTPARAM="-c 1 -m 1G@0 -O" + +. ../../common.sh + +################################################################################ +export MCEXEC +sh ./C1410T01run.sh + +mcstop +unset BOOTPARAM +. $HOME/.mck_test_config +mcreboot +$MCEXEC ./C1420T01 + +for i in kill01:02 kill02:03 kill06:04 kill07:05 kill08:06 kill09:07 \ + signal03:08 signal04:09 signal05:10; do + tp=`echo $i|sed 's/:.*//'` + id=`echo $i|sed 's/.*://'` + $MCEXEC $LTPBIN/$tp 2>&1 | tee $tp.txt + ok=`grep TPASS $tp.txt | wc -l` + ng=`grep TFAIL $tp.txt | wc -l` + if [ $ng = 0 ]; then + echo "*** C1410T$id: $tp PASS ($ok)" + else + echo "*** C1410T$id: $tp FAIL (ok=$ok ng=%ng)" + fi +done diff --git a/test/issues/1410+1420/C1410T01.c b/test/issues/1410+1420/C1410T01.c new file mode 100644 index 00000000..1ceaa843 --- /dev/null +++ b/test/issues/1410+1420/C1410T01.c @@ -0,0 +1,208 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef PAUSE_INST +#define PAUSE_INST "pause" +#endif +#define cpu_pause() \ + ({ \ + __asm__ __volatile__(PAUSE_INST ::: "memory"); \ + }) + +static sem_t *sync_sem1; +static sem_t *sync_sem2; +static int *parent_core; +static int *sync_flag; +#define CHILD_DONE 1 +#define PARENT_DONE 2 + +static int *child_count; + +static void child_func(void) +{ + pid_t pid = getpid(); + + printf("[child] pid = %d\n", pid); + + for (;;) { + *sync_flag = CHILD_DONE; + while (*sync_flag != PARENT_DONE) { + cpu_pause(); + } + (*child_count)++; + cpu_pause(); + } +} + +static void parent_func(void) +{ + pid_t pid; + int i = 0; + + pid = getpid(); + printf("[parent] pid = %d\n", pid); + + for (;;) { + *sync_flag = PARENT_DONE; + while (*sync_flag != CHILD_DONE) { + cpu_pause(); + } + + printf("[parent] loop ok. (%d)\n", i); + if (*child_count != -1) { + printf("[child] loop ok. (%d)\n", *child_count); + } + else { + return; + } + i++; + cpu_pause(); + } +} + +int main(int argc, char *argv[]) +{ + pid_t pid = 0; + + /* get shared memory */ + sync_sem1 = (sem_t *)mmap(NULL, sizeof(sem_t), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + sync_sem2 = (sem_t *)mmap(NULL, sizeof(sem_t), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + parent_core = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + sync_flag = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + child_count = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + + *parent_core = 0; + *sync_flag = 0; + *child_count = 0; + + /* semaphore init */ + sem_init(sync_sem1, 1, 0); + sem_init(sync_sem2, 1, 0); + + /* create child process */ + pid = fork(); + + switch (pid) { + case -1: + /* fork() error. */ + perror("fork()"); + return -1; + case 0: { + /* child process */ + /* before migrate, get cpunum */ + int old_mycore = sched_getcpu(); + int new_mycore = -1; + + printf("[child] running core %d\n", old_mycore); + + /* sync parent */ + sem_post(sync_sem1); + + /* sync parent */ + sem_wait(sync_sem2); + + /* after migrate, get cpunum */ + new_mycore = sched_getcpu(); + + /* corenum check. */ + if (*parent_core != old_mycore) { + printf("[child] before migrate prevcore " + "%d, nowcore %d\n", old_mycore, new_mycore); + + if (old_mycore == new_mycore) { + printf("TP failed, " + "not migrate child process.\n"); + exit(-1); + } + } else { + printf("[child] migrate not required.\n"); + } + + /* loop */ + child_func(); + + /* unmap */ + munmap(sync_sem1, sizeof(sem_t)); + munmap(sync_sem2, sizeof(sem_t)); + munmap(parent_core, sizeof(int)); + munmap(sync_flag, sizeof(int)); + munmap(child_count, sizeof(int)); + + /* child exit */ + exit(-1); + break; + } + + default: { + /* parent process */ + cpu_set_t cpuset; + int result = -1; + + /* sync child */ + sem_wait(sync_sem1); + + /* parent corenum get */ + *parent_core = sched_getcpu(); + + /* child process to migrate parent core */ + printf("[parent] running core %d\n", *parent_core); + printf("[parent] child process migrate/bind " + "to core %d\n", *parent_core); + + CPU_ZERO(&cpuset); + CPU_SET(*parent_core, &cpuset); + + result = sched_setaffinity(pid, sizeof(cpuset), &cpuset); + if (result == -1) { + printf("errno = %d\n", errno); + break; + } + + /* parent core bind */ + printf("[parent] parent process bind " + "to core %d\n", *parent_core); + result = sched_setaffinity(0, sizeof(cpuset), &cpuset); + if (result == -1) { + printf("errno = %d\n", errno); + break; + } + + /* sync child */ + sem_post(sync_sem2); + + /* loop */ + parent_func(); + + /* unmap */ + munmap(sync_sem1, sizeof(sem_t)); + munmap(sync_sem2, sizeof(sem_t)); + munmap(parent_core, sizeof(int)); + munmap(sync_flag, sizeof(int)); + munmap(child_count, sizeof(int)); + break; + } + } + + /* never return */ + printf("RESULT: NG.\n"); + return 0; +} diff --git a/test/issues/1410+1420/C1410T01.sh b/test/issues/1410+1420/C1410T01.sh new file mode 100644 index 00000000..e8e03bc3 --- /dev/null +++ b/test/issues/1410+1420/C1410T01.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ "X$MCEXEC" = X ]; then + echo FAIL: No mcexec found >&2 + exit 1 +fi +$MCEXEC ./C1410T01 & +sleep 1 + +for i in `seq 1 5` +do + echo "send SIGSTOP" + kill -STOP `pidof mcexec` + sleep 1 + echo "send SIGCONT" + kill -CONT `pidof mcexec` + sleep 1 +done + +echo "send SIGKILL" +kill -KILL `pidof mcexec` diff --git a/test/issues/1410+1420/C1410T01run.sh b/test/issues/1410+1420/C1410T01run.sh new file mode 100644 index 00000000..236363c1 --- /dev/null +++ b/test/issues/1410+1420/C1410T01run.sh @@ -0,0 +1,27 @@ +#!/bin/sh +script -c 'sh ./C1410T01.sh' C1410T01.log +awk ' +/send (SIGCONT|SIGKILL)/{ + if (st>0) { + if (n > 5) { + ok++ + } + else{ + ng++ + } + } + st++ + n=0 + next +} +{n++} +END{ + if (ng > 0) { + printf("*** C1410T01 FAIL ng=%d ok=%d\n", ng, ok) + exit(1) + } + else { + printf("*** C1410T01 PASS ng=%d ok=%d\n", ng, ok) + exit(0) + } +}' C1410T01.log diff --git a/test/issues/1410+1420/C1410_arm64.txt b/test/issues/1410+1420/C1410_arm64.txt new file mode 100644 index 00000000..99f0cd0c --- /dev/null +++ b/test/issues/1410+1420/C1410_arm64.txt @@ -0,0 +1,753 @@ +Script started on 2019-12-02 00:47:21+00:00 +bash-4.4$ make test +if [ `uname -m` = x86_64 ]; then \ + gcc -g -Wall -o C1410T01 C1410T01.c -lpthread ;\ +else \ + gcc -DPAUSE_INST=\"yield\" -g -Wall -o C1410T01 C1410T01.c -lpthread ;\ +fi +gcc -g -Wall -o C1420T01 C1420T01.c +sh ./C1410.sh +aarch64 +mcstop+release.sh ... done +mcreboot.sh -c 1 -m 1G@0 -O ... done +Script started, file is C1410T01.log +[child] running core 0 +[parent] running core 0 +[parent] child process migrate/bind to core 0 +[parent] parent process bind to core 0 +[child] migrate not required. +[parent] pid = 3500 +[child] pid = 3505 +[parent] loop ok. (0) +[child] loop ok. (0) +[parent] loop ok. (1) +[child] loop ok. (1) +[parent] loop ok. (2) +[child] loop ok. (2) +[parent] loop ok. (3) +[child] loop ok. (3) +[parent] loop ok. (4) +[child] loop ok. (4) +[parent] loop ok. (5) +[child] loop ok. (5) +[parent] loop ok. (6) +[child] loop ok. (6) +[parent] loop ok. (7) +[child] loop ok. (7) +[parent] loop ok. (8) +[child] loop ok. (8) +[parent] loop ok. (9) +[child] loop ok. (9) +[parent] loop ok. (10) +[child] loop ok. (10) +[parent] loop ok. (11) +[child] loop ok. (11) +[parent] loop ok. (12) +[child] loop ok. (12) +[parent] loop ok. (13) +[child] loop ok. (13) +[parent] loop ok. (14) +[child] loop ok. (14) +[parent] loop ok. (15) +[child] loop ok. (15) +[parent] loop ok. (16) +[child] loop ok. (16) +[parent] loop ok. (17) +[child] loop ok. (17) +[parent] loop ok. (18) +[child] loop ok. (18) +[parent] loop ok. (19) +[child] loop ok. (19) +[parent] loop ok. (20) +[child] loop ok. (20) +[parent] loop ok. (21) +[child] loop ok. (21) +[parent] loop ok. (22) +[child] loop ok. (22) +[parent] loop ok. (23) +[child] loop ok. (23) +[parent] loop ok. (24) +[child] loop ok. (24) +[parent] loop ok. (25) +[child] loop ok. (25) +[parent] loop ok. (26) +[child] loop ok. (26) +[parent] loop ok. (27) +[child] loop ok. (27) +[parent] loop ok. (28) +[child] loop ok. (28) +[parent] loop ok. (29) +[child] loop ok. (29) +[parent] loop ok. (30) +[child] loop ok. (30) +[parent] loop ok. (31) +[child] loop ok. (31) +[parent] loop ok. (32) +[child] loop ok. (32) +[parent] loop ok. (33) +[child] loop ok. (33) +[parent] loop ok. (34) +[child] loop ok. (34) +[parent] loop ok. (35) +[child] loop ok. (35) +[parent] loop ok. (36) +[child] loop ok. (36) +[parent] loop ok. (37) +[child] loop ok. (37) +[parent] loop ok. (38) +[child] loop ok. (38) +[parent] loop ok. (39) +[child] loop ok. (39) +[parent] loop ok. (40) +[child] loop ok. (40) +[parent] loop ok. (41) +[child] loop ok. (41) +[parent] loop ok. (42) +[child] loop ok. (42) +[parent] loop ok. (43) +[child] loop ok. (43) +[parent] loop ok. (44) +[child] loop ok. (44) +[parent] loop ok. (45) +[child] loop ok. (45) +[parent] loop ok. (46) +[child] loop ok. (46) +[parent] loop ok. (47) +send SIGSTOP +[child] loop ok. (47) +[parent] loop ok. (48) +[child] loop ok. (48) +send SIGCONT +[parent] loop ok. (49) +[child] loop ok. (49) +[parent] loop ok. (50) +[child] loop ok. (50) +[parent] loop ok. (51) +[child] loop ok. (51) +[parent] loop ok. (52) +[child] loop ok. (52) +[parent] loop ok. (53) +[child] loop ok. (53) +[parent] loop ok. (54) +[child] loop ok. (54) +[parent] loop ok. (55) +[child] loop ok. (55) +[parent] loop ok. (56) +[child] loop ok. (56) +[parent] loop ok. (57) +[child] loop ok. (57) +[parent] loop ok. (58) +[child] loop ok. (58) +[parent] loop ok. (59) +[child] loop ok. (59) +[parent] loop ok. (60) +[child] loop ok. (60) +[parent] loop ok. (61) +[child] loop ok. (61) +[parent] loop ok. (62) +[child] loop ok. (62) +[parent] loop ok. (63) +[child] loop ok. (63) +[parent] loop ok. (64) +[child] loop ok. (64) +[parent] loop ok. (65) +[child] loop ok. (65) +[parent] loop ok. (66) +[child] loop ok. (66) +[parent] loop ok. (67) +[child] loop ok. (67) +[parent] loop ok. (68) +[child] loop ok. (68) +[parent] loop ok. (69) +[child] loop ok. (69) +[parent] loop ok. (70) +[child] loop ok. (70) +[parent] loop ok. (71) +[child] loop ok. (71) +[parent] loop ok. (72) +[child] loop ok. (72) +[parent] loop ok. (73) +[child] loop ok. (73) +[parent] loop ok. (74) +[child] loop ok. (74) +[parent] loop ok. (75) +[child] loop ok. (75) +[parent] loop ok. (76) +[child] loop ok. (76) +[parent] loop ok. (77) +[child] loop ok. (77) +[parent] loop ok. (78) +[child] loop ok. (78) +[parent] loop ok. (79) +[child] loop ok. (79) +[parent] loop ok. (80) +[child] loop ok. (80) +[parent] loop ok. (81) +[child] loop ok. (81) +[parent] loop ok. (82) +[child] loop ok. (82) +[parent] loop ok. (83) +[child] loop ok. (83) +[parent] loop ok. (84) +[child] loop ok. (84) +[parent] loop ok. (85) +[child] loop ok. (85) +[parent] loop ok. (86) +[child] loop ok. (86) +[parent] loop ok. (87) +[child] loop ok. (87) +[parent] loop ok. (88) +[child] loop ok. (88) +[parent] loop ok. (89) +[child] loop ok. (89) +[parent] loop ok. (90) +[child] loop ok. (90) +[parent] loop ok. (91) +[child] loop ok. (91) +[parent] loop ok. (92) +[child] loop ok. (92) +[parent] loop ok. (93) +[child] loop ok. (93) +[parent] loop ok. (94) +[child] loop ok. (94) +[parent] loop ok. (95) +[child] loop ok. (95) +[parent] loop ok. (96) +[child] loop ok. (96) +[parent] loop ok. (97) +[child] loop ok. (97) +[parent] loop ok. (98) +[child] loop ok. (98) +send SIGSTOP +send SIGCONT +[parent] loop ok. (99) +[child] loop ok. (99) +[parent] loop ok. (100) +[child] loop ok. (100) +[parent] loop ok. (101) +[child] loop ok. (101) +[parent] loop ok. (102) +[child] loop ok. (102) +[parent] loop ok. (103) +[child] loop ok. (103) +[parent] loop ok. (104) +[child] loop ok. (104) +[parent] loop ok. (105) +[child] loop ok. (105) +[parent] loop ok. (106) +[child] loop ok. (106) +[parent] loop ok. (107) +[child] loop ok. (107) +[parent] loop ok. (108) +[child] loop ok. (108) +[parent] loop ok. (109) +[child] loop ok. (109) +[parent] loop ok. (110) +[child] loop ok. (110) +[parent] loop ok. (111) +[child] loop ok. (111) +[parent] loop ok. (112) +[child] loop ok. (112) +[parent] loop ok. (113) +[child] loop ok. (113) +[parent] loop ok. (114) +[child] loop ok. (114) +[parent] loop ok. (115) +[child] loop ok. (115) +[parent] loop ok. (116) +[child] loop ok. (116) +[parent] loop ok. (117) +[child] loop ok. (117) +[parent] loop ok. (118) +[child] loop ok. (118) +[parent] loop ok. (119) +[child] loop ok. (119) +[parent] loop ok. (120) +[child] loop ok. (120) +[parent] loop ok. (121) +[child] loop ok. (121) +[parent] loop ok. (122) +[child] loop ok. (122) +[parent] loop ok. (123) +[child] loop ok. (123) +[parent] loop ok. (124) +[child] loop ok. (124) +[parent] loop ok. (125) +[child] loop ok. (125) +[parent] loop ok. (126) +[child] loop ok. (126) +[parent] loop ok. (127) +[child] loop ok. (127) +[parent] loop ok. (128) +[child] loop ok. (128) +[parent] loop ok. (129) +[child] loop ok. (129) +[parent] loop ok. (130) +[child] loop ok. (130) +[parent] loop ok. (131) +[child] loop ok. (131) +[parent] loop ok. (132) +[child] loop ok. (132) +[parent] loop ok. (133) +[child] loop ok. (133) +[parent] loop ok. (134) +[child] loop ok. (134) +[parent] loop ok. (135) +[child] loop ok. (135) +[parent] loop ok. (136) +[child] loop ok. (136) +[parent] loop ok. (137) +[child] loop ok. (137) +[parent] loop ok. (138) +[child] loop ok. (138) +[parent] loop ok. (139) +[child] loop ok. (139) +[parent] loop ok. (140) +[child] loop ok. (140) +[parent] loop ok. (141) +[child] loop ok. (141) +[parent] loop ok. (142) +[child] loop ok. (142) +[parent] loop ok. (143) +[child] loop ok. (143) +[parent] loop ok. (144) +[child] loop ok. (144) +[parent] loop ok. (145) +[child] loop ok. (145) +[parent] loop ok. (146) +[child] loop ok. (146) +[parent] loop ok. (147) +[child] loop ok. (147) +[parent] loop ok. (148) +[child] loop ok. (148) +send SIGSTOP +send SIGCONT +[parent] loop ok. (149) +[child] loop ok. (149) +[parent] loop ok. (150) +[child] loop ok. (150) +[parent] loop ok. (151) +[child] loop ok. (151) +[parent] loop ok. (152) +[child] loop ok. (152) +[parent] loop ok. (153) +[child] loop ok. (153) +[parent] loop ok. (154) +[child] loop ok. (154) +[parent] loop ok. (155) +[child] loop ok. (155) +[parent] loop ok. (156) +[child] loop ok. (156) +[parent] loop ok. (157) +[child] loop ok. (157) +[parent] loop ok. (158) +[child] loop ok. (158) +[parent] loop ok. (159) +[child] loop ok. (159) +[parent] loop ok. (160) +[child] loop ok. (160) +[parent] loop ok. (161) +[child] loop ok. (161) +[parent] loop ok. (162) +[child] loop ok. (162) +[parent] loop ok. (163) +[child] loop ok. (163) +[parent] loop ok. (164) +[child] loop ok. (164) +[parent] loop ok. (165) +[child] loop ok. (165) +[parent] loop ok. (166) +[child] loop ok. (166) +[parent] loop ok. (167) +[child] loop ok. (167) +[parent] loop ok. (168) +[child] loop ok. (168) +[parent] loop ok. (169) +[child] loop ok. (169) +[parent] loop ok. (170) +[child] loop ok. (170) +[parent] loop ok. (171) +[child] loop ok. (171) +[parent] loop ok. (172) +[child] loop ok. (172) +[parent] loop ok. (173) +[child] loop ok. (173) +[parent] loop ok. (174) +[child] loop ok. (174) +[parent] loop ok. (175) +[child] loop ok. (175) +[parent] loop ok. (176) +[child] loop ok. (176) +[parent] loop ok. (177) +[child] loop ok. (177) +[parent] loop ok. (178) +[child] loop ok. (178) +[parent] loop ok. (179) +[child] loop ok. (179) +[parent] loop ok. (180) +[child] loop ok. (180) +[parent] loop ok. (181) +[child] loop ok. (181) +[parent] loop ok. (182) +[child] loop ok. (182) +[parent] loop ok. (183) +[child] loop ok. (183) +[parent] loop ok. (184) +[child] loop ok. (184) +[parent] loop ok. (185) +[child] loop ok. (185) +[parent] loop ok. (186) +[child] loop ok. (186) +[parent] loop ok. (187) +[child] loop ok. (187) +[parent] loop ok. (188) +[child] loop ok. (188) +[parent] loop ok. (189) +[child] loop ok. (189) +[parent] loop ok. (190) +[child] loop ok. (190) +[parent] loop ok. (191) +[child] loop ok. (191) +[parent] loop ok. (192) +[child] loop ok. (192) +[parent] loop ok. (193) +[child] loop ok. (193) +[parent] loop ok. (194) +[child] loop ok. (194) +[parent] loop ok. (195) +[child] loop ok. (195) +[parent] loop ok. (196) +[child] loop ok. (196) +[parent] loop ok. (197) +[child] loop ok. (197) +[parent] loop ok. (198) +[child] loop ok. (198) +send SIGSTOP +send SIGCONT +[parent] loop ok. (199) +[child] loop ok. (199) +[parent] loop ok. (200) +[child] loop ok. (200) +[parent] loop ok. (201) +[child] loop ok. (201) +[parent] loop ok. (202) +[child] loop ok. (202) +[parent] loop ok. (203) +[child] loop ok. (203) +[parent] loop ok. (204) +[child] loop ok. (204) +[parent] loop ok. (205) +[child] loop ok. (205) +[parent] loop ok. (206) +[child] loop ok. (206) +[parent] loop ok. (207) +[child] loop ok. (207) +[parent] loop ok. (208) +[child] loop ok. (208) +[parent] loop ok. (209) +[child] loop ok. (209) +[parent] loop ok. (210) +[child] loop ok. (210) +[parent] loop ok. (211) +[child] loop ok. (211) +[parent] loop ok. (212) +[child] loop ok. (212) +[parent] loop ok. (213) +[child] loop ok. (213) +[parent] loop ok. (214) +[child] loop ok. (214) +[parent] loop ok. (215) +[child] loop ok. (215) +[parent] loop ok. (216) +[child] loop ok. (216) +[parent] loop ok. (217) +[child] loop ok. (217) +[parent] loop ok. (218) +[child] loop ok. (218) +[parent] loop ok. (219) +[child] loop ok. (219) +[parent] loop ok. (220) +[child] loop ok. (220) +[parent] loop ok. (221) +[child] loop ok. (221) +[parent] loop ok. (222) +[child] loop ok. (222) +[parent] loop ok. (223) +[child] loop ok. (223) +[parent] loop ok. (224) +[child] loop ok. (224) +[parent] loop ok. (225) +[child] loop ok. (225) +[parent] loop ok. (226) +[child] loop ok. (226) +[parent] loop ok. (227) +[child] loop ok. (227) +[parent] loop ok. (228) +[child] loop ok. (228) +[parent] loop ok. (229) +[child] loop ok. (229) +[parent] loop ok. (230) +[child] loop ok. (230) +[parent] loop ok. (231) +[child] loop ok. (231) +[parent] loop ok. (232) +[child] loop ok. (232) +[parent] loop ok. (233) +[child] loop ok. (233) +[parent] loop ok. (234) +[child] loop ok. (234) +[parent] loop ok. (235) +[child] loop ok. (235) +[parent] loop ok. (236) +[child] loop ok. (236) +[parent] loop ok. (237) +[child] loop ok. (237) +[parent] loop ok. (238) +[child] loop ok. (238) +[parent] loop ok. (239) +[child] loop ok. (239) +[parent] loop ok. (240) +[child] loop ok. (240) +[parent] loop ok. (241) +[child] loop ok. (241) +[parent] loop ok. (242) +[child] loop ok. (242) +[parent] loop ok. (243) +[child] loop ok. (243) +[parent] loop ok. (244) +[child] loop ok. (244) +[parent] loop ok. (245) +[child] loop ok. (245) +[parent] loop ok. (246) +[child] loop ok. (246) +[parent] loop ok. (247) +[child] loop ok. (247) +[parent] loop ok. (248) +[child] loop ok. (248) +send SIGSTOP +send SIGCONT +[parent] loop ok. (249) +[child] loop ok. (249) +[parent] loop ok. (250) +[child] loop ok. (250) +[parent] loop ok. (251) +[child] loop ok. (251) +[parent] loop ok. (252) +[child] loop ok. (252) +[parent] loop ok. (253) +[child] loop ok. (253) +[parent] loop ok. (254) +[child] loop ok. (254) +[parent] loop ok. (255) +[child] loop ok. (255) +[parent] loop ok. (256) +[child] loop ok. (256) +[parent] loop ok. (257) +[child] loop ok. (257) +[parent] loop ok. (258) +[child] loop ok. (258) +[parent] loop ok. (259) +[child] loop ok. (259) +[parent] loop ok. (260) +[child] loop ok. (260) +[parent] loop ok. (261) +[child] loop ok. (261) +[parent] loop ok. (262) +[child] loop ok. (262) +[parent] loop ok. (263) +[child] loop ok. (263) +[parent] loop ok. (264) +[child] loop ok. (264) +[parent] loop ok. (265) +[child] loop ok. (265) +[parent] loop ok. (266) +[child] loop ok. (266) +[parent] loop ok. (267) +[child] loop ok. (267) +[parent] loop ok. (268) +[child] loop ok. (268) +[parent] loop ok. (269) +[child] loop ok. (269) +[parent] loop ok. (270) +[child] loop ok. (270) +[parent] loop ok. (271) +[child] loop ok. (271) +[parent] loop ok. (272) +[child] loop ok. (272) +[parent] loop ok. (273) +[child] loop ok. (273) +[parent] loop ok. (274) +[child] loop ok. (274) +[parent] loop ok. (275) +[child] loop ok. (275) +[parent] loop ok. (276) +[child] loop ok. (276) +[parent] loop ok. (277) +[child] loop ok. (277) +[parent] loop ok. (278) +[child] loop ok. (278) +[parent] loop ok. (279) +[child] loop ok. (279) +[parent] loop ok. (280) +[child] loop ok. (280) +[parent] loop ok. (281) +[child] loop ok. (281) +[parent] loop ok. (282) +[child] loop ok. (282) +[parent] loop ok. (283) +[child] loop ok. (283) +[parent] loop ok. (284) +[child] loop ok. (284) +[parent] loop ok. (285) +[child] loop ok. (285) +[parent] loop ok. (286) +[child] loop ok. (286) +[parent] loop ok. (287) +[child] loop ok. (287) +[parent] loop ok. (288) +[child] loop ok. (288) +[parent] loop ok. (289) +[child] loop ok. (289) +[parent] loop ok. (290) +[child] loop ok. (290) +[parent] loop ok. (291) +[child] loop ok. (291) +[parent] loop ok. (292) +[child] loop ok. (292) +[parent] loop ok. (293) +[child] loop ok. (293) +[parent] loop ok. (294) +[child] loop ok. (294) +[parent] loop ok. (295) +[child] loop ok. (295) +[parent] loop ok. (296) +[child] loop ok. (296) +[parent] loop ok. (297) +[child] loop ok. (297) +[parent] loop ok. (298) +[child] loop ok. (298) +send SIGKILL +Script done, file is C1410T01.log +*** C1410T01 PASS ng=0 ok=5 +mcstop+release.sh ... done +mcreboot.sh -c 2-7,10-15 -m 2G@0 -O ... done +*** C1420T01: START +. +. +. +send SIGSTOP +send SIGCONT +. +. +. +send SIGINT +*** C1420T01 PASS: child terminated by signal 2 +kill01 1 TPASS : received expected signal 9 +*** C1410T02: kill01 PASS (1) +kill02 1 TPASS : The signal was sent to all processes in the process group. +kill02 2 TPASS : The signal was not sent to selective processes that were not in the process group. +*** C1410T03: kill02 PASS (2) +kill06 1 TPASS : received expected signal 9 +*** C1410T04: kill06 PASS (1) +kill07 0 TINFO : received expected signal 9 +kill07 1 TPASS : Did not catch signal as expected +*** C1410T05: kill07 PASS (1) +kill08 1 TPASS : received expected signal 9 +*** C1410T06: kill08 PASS (1) +kill09 1 TPASS : kill(4097, SIGKILL) returned 0 +*** C1410T07: kill09 PASS (1) +signal03 1 TPASS : signal03 call succeeded +signal03 2 TPASS : signal03 call succeeded +signal03 3 TPASS : signal03 call succeeded +signal03 4 TPASS : signal03 call succeeded +signal03 5 TPASS : signal03 call succeeded +signal03 6 TPASS : signal03 call succeeded +signal03 7 TPASS : signal03 call succeeded +signal03 8 TPASS : signal03 call succeeded +signal03 9 TPASS : signal03 call succeeded +signal03 10 TPASS : signal03 call succeeded +signal03 11 TPASS : signal03 call succeeded +signal03 12 TPASS : signal03 call succeeded +signal03 13 TPASS : signal03 call succeeded +signal03 14 TPASS : signal03 call succeeded +signal03 15 TPASS : signal03 call succeeded +signal03 16 TPASS : signal03 call succeeded +signal03 17 TPASS : signal03 call succeeded +signal03 18 TPASS : signal03 call succeeded +signal03 19 TPASS : signal03 call succeeded +signal03 20 TPASS : signal03 call succeeded +signal03 21 TPASS : signal03 call succeeded +signal03 22 TPASS : signal03 call succeeded +signal03 23 TPASS : signal03 call succeeded +signal03 24 TPASS : signal03 call succeeded +signal03 25 TPASS : signal03 call succeeded +signal03 26 TPASS : signal03 call succeeded +signal03 27 TPASS : signal03 call succeeded +signal03 28 TPASS : signal03 call succeeded +signal03 29 TPASS : signal03 call succeeded +signal03 30 TPASS : signal03 call succeeded +*** C1410T08: signal03 PASS (30) +signal04 1 TPASS : signal04 call succeeded received (nil). +signal04 2 TPASS : signal04 call succeeded received (nil). +signal04 3 TPASS : signal04 call succeeded received (nil). +signal04 4 TPASS : signal04 call succeeded received (nil). +signal04 5 TPASS : signal04 call succeeded received (nil). +signal04 6 TPASS : signal04 call succeeded received (nil). +signal04 7 TPASS : signal04 call succeeded received (nil). +signal04 8 TPASS : signal04 call succeeded received (nil). +signal04 9 TPASS : signal04 call succeeded received (nil). +signal04 10 TPASS : signal04 call succeeded received (nil). +signal04 11 TPASS : signal04 call succeeded received (nil). +signal04 12 TPASS : signal04 call succeeded received (nil). +signal04 13 TPASS : signal04 call succeeded received (nil). +signal04 14 TPASS : signal04 call succeeded received (nil). +signal04 15 TPASS : signal04 call succeeded received (nil). +signal04 16 TPASS : signal04 call succeeded received (nil). +signal04 17 TPASS : signal04 call succeeded received (nil). +signal04 18 TPASS : signal04 call succeeded received (nil). +signal04 19 TPASS : signal04 call succeeded received (nil). +signal04 20 TPASS : signal04 call succeeded received (nil). +signal04 21 TPASS : signal04 call succeeded received (nil). +signal04 22 TPASS : signal04 call succeeded received (nil). +signal04 23 TPASS : signal04 call succeeded received (nil). +signal04 24 TPASS : signal04 call succeeded received (nil). +signal04 25 TPASS : signal04 call succeeded received (nil). +signal04 26 TPASS : signal04 call succeeded received (nil). +signal04 27 TPASS : signal04 call succeeded received (nil). +signal04 28 TPASS : signal04 call succeeded received (nil). +*** C1410T09: signal04 PASS (28) +signal05 1 TPASS : signal05 call succeeded +signal05 2 TPASS : signal05 call succeeded +signal05 3 TPASS : signal05 call succeeded +signal05 4 TPASS : signal05 call succeeded +signal05 5 TPASS : signal05 call succeeded +signal05 6 TPASS : signal05 call succeeded +signal05 7 TPASS : signal05 call succeeded +signal05 8 TPASS : signal05 call succeeded +signal05 9 TPASS : signal05 call succeeded +signal05 10 TPASS : signal05 call succeeded +signal05 11 TPASS : signal05 call succeeded +signal05 12 TPASS : signal05 call succeeded +signal05 13 TPASS : signal05 call succeeded +signal05 14 TPASS : signal05 call succeeded +signal05 15 TPASS : signal05 call succeeded +signal05 16 TPASS : signal05 call succeeded +signal05 17 TPASS : signal05 call succeeded +signal05 18 TPASS : signal05 call succeeded +signal05 19 TPASS : signal05 call succeeded +signal05 20 TPASS : signal05 call succeeded +signal05 21 TPASS : signal05 call succeeded +signal05 22 TPASS : signal05 call succeeded +signal05 23 TPASS : signal05 call succeeded +signal05 24 TPASS : signal05 call succeeded +signal05 25 TPASS : signal05 call succeeded +signal05 26 TPASS : signal05 call succeeded +signal05 27 TPASS : signal05 call succeeded +signal05 28 TPASS : signal05 call succeeded +signal05 29 TPASS : signal05 call succeeded +signal05 30 TPASS : signal05 call succeeded +*** C1410T10: signal05 PASS (30) +bash-4.4$ exit +exit + +Script done on 2019-12-02 00:48:11+00:00 diff --git a/test/issues/1410+1420/C1410_x86_64.txt b/test/issues/1410+1420/C1410_x86_64.txt new file mode 100644 index 00000000..ff5806f4 --- /dev/null +++ b/test/issues/1410+1420/C1410_x86_64.txt @@ -0,0 +1,769 @@ +Script started on Mon Dec 2 09:27:00 2019 +bash-4.2$ make test +if [ `uname -m` = x86_64 ]; then \ + gcc -g -Wall -o C1410T01 C1410T01.c -lpthread ;\ +else \ + gcc -DPAUSE_INST=\"yield\" -g -Wall -o C1410T01 C1410T01.c -lpthread ;\ +fi +gcc -g -Wall -o C1420T01 C1420T01.c +sh ./C1410.sh +x86_64 +mcstop+release.sh ... done +mcreboot.sh -c 1 -m 1G@0 -O ... done +Script started, file is C1410T01.log +[child] running core 0 +[parent] running core 0 +[parent] child process migrate/bind to core 0 +[parent] parent process bind to core 0 +[child] migrate not required. +[parent] pid = 8896 +[child] pid = 8901 +[parent] loop ok. (0) +[child] loop ok. (0) +[parent] loop ok. (1) +[child] loop ok. (1) +[parent] loop ok. (2) +[child] loop ok. (2) +[parent] loop ok. (3) +[child] loop ok. (3) +[parent] loop ok. (4) +[child] loop ok. (4) +[parent] loop ok. (5) +[child] loop ok. (5) +[parent] loop ok. (6) +[child] loop ok. (6) +[parent] loop ok. (7) +[child] loop ok. (7) +[parent] loop ok. (8) +[child] loop ok. (8) +[parent] loop ok. (9) +[child] loop ok. (9) +[parent] loop ok. (10) +[child] loop ok. (10) +[parent] loop ok. (11) +[child] loop ok. (11) +[parent] loop ok. (12) +[child] loop ok. (12) +[parent] loop ok. (13) +[child] loop ok. (13) +[parent] loop ok. (14) +[child] loop ok. (14) +[parent] loop ok. (15) +[child] loop ok. (15) +[parent] loop ok. (16) +[child] loop ok. (16) +[parent] loop ok. (17) +[child] loop ok. (17) +[parent] loop ok. (18) +[child] loop ok. (18) +[parent] loop ok. (19) +[child] loop ok. (19) +[parent] loop ok. (20) +[child] loop ok. (20) +[parent] loop ok. (21) +[child] loop ok. (21) +[parent] loop ok. (22) +[child] loop ok. (22) +[parent] loop ok. (23) +[child] loop ok. (23) +[parent] loop ok. (24) +[child] loop ok. (24) +[parent] loop ok. (25) +[child] loop ok. (25) +[parent] loop ok. (26) +[child] loop ok. (26) +[parent] loop ok. (27) +[child] loop ok. (27) +[parent] loop ok. (28) +[child] loop ok. (28) +[parent] loop ok. (29) +[child] loop ok. (29) +[parent] loop ok. (30) +[child] loop ok. (30) +[parent] loop ok. (31) +[child] loop ok. (31) +[parent] loop ok. (32) +[child] loop ok. (32) +[parent] loop ok. (33) +[child] loop ok. (33) +[parent] loop ok. (34) +[child] loop ok. (34) +[parent] loop ok. (35) +[child] loop ok. (35) +[parent] loop ok. (36) +[child] loop ok. (36) +[parent] loop ok. (37) +[child] loop ok. (37) +[parent] loop ok. (38) +[child] loop ok. (38) +[parent] loop ok. (39) +[child] loop ok. (39) +[parent] loop ok. (40) +[child] loop ok. (40) +[parent] loop ok. (41) +[child] loop ok. (41) +[parent] loop ok. (42) +[child] loop ok. (42) +[parent] loop ok. (43) +[child] loop ok. (43) +[parent] loop ok. (44) +[child] loop ok. (44) +[parent] loop ok. (45) +[child] loop ok. (45) +[parent] loop ok. (46) +[child] loop ok. (46) +[parent] loop ok. (47) +[child] loop ok. (47) +[parent] loop ok. (48) +[child] loop ok. (48) +[parent] loop ok. (49) +[child] loop ok. (49) +send SIGSTOP +[parent] loop ok. (50) +[child] loop ok. (50) +send SIGCONT +[parent] loop ok. (51) +[child] loop ok. (51) +[parent] loop ok. (52) +[child] loop ok. (52) +[parent] loop ok. (53) +[child] loop ok. (53) +[parent] loop ok. (54) +[child] loop ok. (54) +[parent] loop ok. (55) +[child] loop ok. (55) +[parent] loop ok. (56) +[child] loop ok. (56) +[parent] loop ok. (57) +[child] loop ok. (57) +[parent] loop ok. (58) +[child] loop ok. (58) +[parent] loop ok. (59) +[child] loop ok. (59) +[parent] loop ok. (60) +[child] loop ok. (60) +[parent] loop ok. (61) +[child] loop ok. (61) +[parent] loop ok. (62) +[child] loop ok. (62) +[parent] loop ok. (63) +[child] loop ok. (63) +[parent] loop ok. (64) +[child] loop ok. (64) +[parent] loop ok. (65) +[child] loop ok. (65) +[parent] loop ok. (66) +[child] loop ok. (66) +[parent] loop ok. (67) +[child] loop ok. (67) +[parent] loop ok. (68) +[child] loop ok. (68) +[parent] loop ok. (69) +[child] loop ok. (69) +[parent] loop ok. (70) +[child] loop ok. (70) +[parent] loop ok. (71) +[child] loop ok. (71) +[parent] loop ok. (72) +[child] loop ok. (72) +[parent] loop ok. (73) +[child] loop ok. (73) +[parent] loop ok. (74) +[child] loop ok. (74) +[parent] loop ok. (75) +[child] loop ok. (75) +[parent] loop ok. (76) +[child] loop ok. (76) +[parent] loop ok. (77) +[child] loop ok. (77) +[parent] loop ok. (78) +[child] loop ok. (78) +[parent] loop ok. (79) +[child] loop ok. (79) +[parent] loop ok. (80) +[child] loop ok. (80) +[parent] loop ok. (81) +[child] loop ok. (81) +[parent] loop ok. (82) +[child] loop ok. (82) +[parent] loop ok. (83) +[child] loop ok. (83) +[parent] loop ok. (84) +[child] loop ok. (84) +[parent] loop ok. (85) +[child] loop ok. (85) +[parent] loop ok. (86) +[child] loop ok. (86) +[parent] loop ok. (87) +[child] loop ok. (87) +[parent] loop ok. (88) +[child] loop ok. (88) +[parent] loop ok. (89) +[child] loop ok. (89) +[parent] loop ok. (90) +[child] loop ok. (90) +[parent] loop ok. (91) +[child] loop ok. (91) +[parent] loop ok. (92) +[child] loop ok. (92) +[parent] loop ok. (93) +[child] loop ok. (93) +[parent] loop ok. (94) +[child] loop ok. (94) +[parent] loop ok. (95) +[child] loop ok. (95) +[parent] loop ok. (96) +[child] loop ok. (96) +[parent] loop ok. (97) +[child] loop ok. (97) +[parent] loop ok. (98) +[child] loop ok. (98) +[parent] loop ok. (99) +[child] loop ok. (99) +[parent] loop ok. (100) +[child] loop ok. (100) +send SIGSTOP +[parent] loop ok. (101) +[child] loop ok. (101) +send SIGCONT +[parent] loop ok. (102) +[child] loop ok. (102) +[parent] loop ok. (103) +[child] loop ok. (103) +[parent] loop ok. (104) +[child] loop ok. (104) +[parent] loop ok. (105) +[child] loop ok. (105) +[parent] loop ok. (106) +[child] loop ok. (106) +[parent] loop ok. (107) +[child] loop ok. (107) +[parent] loop ok. (108) +[child] loop ok. (108) +[parent] loop ok. (109) +[child] loop ok. (109) +[parent] loop ok. (110) +[child] loop ok. (110) +[parent] loop ok. (111) +[child] loop ok. (111) +[parent] loop ok. (112) +[child] loop ok. (112) +[parent] loop ok. (113) +[child] loop ok. (113) +[parent] loop ok. (114) +[child] loop ok. (114) +[parent] loop ok. (115) +[child] loop ok. (115) +[parent] loop ok. (116) +[child] loop ok. (116) +[parent] loop ok. (117) +[child] loop ok. (117) +[parent] loop ok. (118) +[child] loop ok. (118) +[parent] loop ok. (119) +[child] loop ok. (119) +[parent] loop ok. (120) +[child] loop ok. (120) +[parent] loop ok. (121) +[child] loop ok. (121) +[parent] loop ok. (122) +[child] loop ok. (122) +[parent] loop ok. (123) +[child] loop ok. (123) +[parent] loop ok. (124) +[child] loop ok. (124) +[parent] loop ok. (125) +[child] loop ok. (125) +[parent] loop ok. (126) +[child] loop ok. (126) +[parent] loop ok. (127) +[child] loop ok. (127) +[parent] loop ok. (128) +[child] loop ok. (128) +[parent] loop ok. (129) +[child] loop ok. (129) +[parent] loop ok. (130) +[child] loop ok. (130) +[parent] loop ok. (131) +[child] loop ok. (131) +[parent] loop ok. (132) +[child] loop ok. (132) +[parent] loop ok. (133) +[child] loop ok. (133) +[parent] loop ok. (134) +[child] loop ok. (134) +[parent] loop ok. (135) +[child] loop ok. (135) +[parent] loop ok. (136) +[child] loop ok. (136) +[parent] loop ok. (137) +[child] loop ok. (137) +[parent] loop ok. (138) +[child] loop ok. (138) +[parent] loop ok. (139) +[child] loop ok. (139) +[parent] loop ok. (140) +[child] loop ok. (140) +[parent] loop ok. (141) +[child] loop ok. (141) +[parent] loop ok. (142) +[child] loop ok. (142) +[parent] loop ok. (143) +[child] loop ok. (143) +[parent] loop ok. (144) +[child] loop ok. (144) +[parent] loop ok. (145) +[child] loop ok. (145) +[parent] loop ok. (146) +[child] loop ok. (146) +[parent] loop ok. (147) +[child] loop ok. (147) +[parent] loop ok. (148) +[child] loop ok. (148) +[parent] loop ok. (149) +[child] loop ok. (149) +[parent] loop ok. (150) +[child] loop ok. (150) +[parent] loop ok. (151) +[child] loop ok. (151) +send SIGSTOP +[parent] loop ok. (152) +[child] loop ok. (152) +send SIGCONT +[parent] loop ok. (153) +[child] loop ok. (153) +[parent] loop ok. (154) +[child] loop ok. (154) +[parent] loop ok. (155) +[child] loop ok. (155) +[parent] loop ok. (156) +[child] loop ok. (156) +[parent] loop ok. (157) +[child] loop ok. (157) +[parent] loop ok. (158) +[child] loop ok. (158) +[parent] loop ok. (159) +[child] loop ok. (159) +[parent] loop ok. (160) +[child] loop ok. (160) +[parent] loop ok. (161) +[child] loop ok. (161) +[parent] loop ok. (162) +[child] loop ok. (162) +[parent] loop ok. (163) +[child] loop ok. (163) +[parent] loop ok. (164) +[child] loop ok. (164) +[parent] loop ok. (165) +[child] loop ok. (165) +[parent] loop ok. (166) +[child] loop ok. (166) +[parent] loop ok. (167) +[child] loop ok. (167) +[parent] loop ok. (168) +[child] loop ok. (168) +[parent] loop ok. (169) +[child] loop ok. (169) +[parent] loop ok. (170) +[child] loop ok. (170) +[parent] loop ok. (171) +[child] loop ok. (171) +[parent] loop ok. (172) +[child] loop ok. (172) +[parent] loop ok. (173) +[child] loop ok. (173) +[parent] loop ok. (174) +[child] loop ok. (174) +[parent] loop ok. (175) +[child] loop ok. (175) +[parent] loop ok. (176) +[child] loop ok. (176) +[parent] loop ok. (177) +[child] loop ok. (177) +[parent] loop ok. (178) +[child] loop ok. (178) +[parent] loop ok. (179) +[child] loop ok. (179) +[parent] loop ok. (180) +[child] loop ok. (180) +[parent] loop ok. (181) +[child] loop ok. (181) +[parent] loop ok. (182) +[child] loop ok. (182) +[parent] loop ok. (183) +[child] loop ok. (183) +[parent] loop ok. (184) +[child] loop ok. (184) +[parent] loop ok. (185) +[child] loop ok. (185) +[parent] loop ok. (186) +[child] loop ok. (186) +[parent] loop ok. (187) +[child] loop ok. (187) +[parent] loop ok. (188) +[child] loop ok. (188) +[parent] loop ok. (189) +[child] loop ok. (189) +[parent] loop ok. (190) +[child] loop ok. (190) +[parent] loop ok. (191) +[child] loop ok. (191) +[parent] loop ok. (192) +[child] loop ok. (192) +[parent] loop ok. (193) +[child] loop ok. (193) +[parent] loop ok. (194) +[child] loop ok. (194) +[parent] loop ok. (195) +[child] loop ok. (195) +[parent] loop ok. (196) +[child] loop ok. (196) +[parent] loop ok. (197) +[child] loop ok. (197) +[parent] loop ok. (198) +[child] loop ok. (198) +[parent] loop ok. (199) +[child] loop ok. (199) +[parent] loop ok. (200) +[child] loop ok. (200) +[parent] loop ok. (201) +[child] loop ok. (201) +[parent] loop ok. (202) +[child] loop ok. (202) +send SIGSTOP +[parent] loop ok. (203) +[child] loop ok. (203) +send SIGCONT +[parent] loop ok. (204) +[child] loop ok. (204) +[parent] loop ok. (205) +[child] loop ok. (205) +[parent] loop ok. (206) +[child] loop ok. (206) +[parent] loop ok. (207) +[child] loop ok. (207) +[parent] loop ok. (208) +[child] loop ok. (208) +[parent] loop ok. (209) +[child] loop ok. (209) +[parent] loop ok. (210) +[child] loop ok. (210) +[parent] loop ok. (211) +[child] loop ok. (211) +[parent] loop ok. (212) +[child] loop ok. (212) +[parent] loop ok. (213) +[child] loop ok. (213) +[parent] loop ok. (214) +[child] loop ok. (214) +[parent] loop ok. (215) +[child] loop ok. (215) +[parent] loop ok. (216) +[child] loop ok. (216) +[parent] loop ok. (217) +[child] loop ok. (217) +[parent] loop ok. (218) +[child] loop ok. (218) +[parent] loop ok. (219) +[child] loop ok. (219) +[parent] loop ok. (220) +[child] loop ok. (220) +[parent] loop ok. (221) +[child] loop ok. (221) +[parent] loop ok. (222) +[child] loop ok. (222) +[parent] loop ok. (223) +[child] loop ok. (223) +[parent] loop ok. (224) +[child] loop ok. (224) +[parent] loop ok. (225) +[child] loop ok. (225) +[parent] loop ok. (226) +[child] loop ok. (226) +[parent] loop ok. (227) +[child] loop ok. (227) +[parent] loop ok. (228) +[child] loop ok. (228) +[parent] loop ok. (229) +[child] loop ok. (229) +[parent] loop ok. (230) +[child] loop ok. (230) +[parent] loop ok. (231) +[child] loop ok. (231) +[parent] loop ok. (232) +[child] loop ok. (232) +[parent] loop ok. (233) +[child] loop ok. (233) +[parent] loop ok. (234) +[child] loop ok. (234) +[parent] loop ok. (235) +[child] loop ok. (235) +[parent] loop ok. (236) +[child] loop ok. (236) +[parent] loop ok. (237) +[child] loop ok. (237) +[parent] loop ok. (238) +[child] loop ok. (238) +[parent] loop ok. (239) +[child] loop ok. (239) +[parent] loop ok. (240) +[child] loop ok. (240) +[parent] loop ok. (241) +[child] loop ok. (241) +[parent] loop ok. (242) +[child] loop ok. (242) +[parent] loop ok. (243) +[child] loop ok. (243) +[parent] loop ok. (244) +[child] loop ok. (244) +[parent] loop ok. (245) +[child] loop ok. (245) +[parent] loop ok. (246) +[child] loop ok. (246) +[parent] loop ok. (247) +[child] loop ok. (247) +[parent] loop ok. (248) +[child] loop ok. (248) +[parent] loop ok. (249) +[child] loop ok. (249) +[parent] loop ok. (250) +[child] loop ok. (250) +[parent] loop ok. (251) +[child] loop ok. (251) +[parent] loop ok. (252) +[child] loop ok. (252) +[parent] loop ok. (253) +[child] loop ok. (253) +send SIGSTOP +[parent] loop ok. (254) +[child] loop ok. (254) +send SIGCONT +[parent] loop ok. (255) +[child] loop ok. (255) +[parent] loop ok. (256) +[child] loop ok. (256) +[parent] loop ok. (257) +[child] loop ok. (257) +[parent] loop ok. (258) +[child] loop ok. (258) +[parent] loop ok. (259) +[child] loop ok. (259) +[parent] loop ok. (260) +[child] loop ok. (260) +[parent] loop ok. (261) +[child] loop ok. (261) +[parent] loop ok. (262) +[child] loop ok. (262) +[parent] loop ok. (263) +[child] loop ok. (263) +[parent] loop ok. (264) +[child] loop ok. (264) +[parent] loop ok. (265) +[child] loop ok. (265) +[parent] loop ok. (266) +[child] loop ok. (266) +[parent] loop ok. (267) +[child] loop ok. (267) +[parent] loop ok. (268) +[child] loop ok. (268) +[parent] loop ok. (269) +[child] loop ok. (269) +[parent] loop ok. (270) +[child] loop ok. (270) +[parent] loop ok. (271) +[child] loop ok. (271) +[parent] loop ok. (272) +[child] loop ok. (272) +[parent] loop ok. (273) +[child] loop ok. (273) +[parent] loop ok. (274) +[child] loop ok. (274) +[parent] loop ok. (275) +[child] loop ok. (275) +[parent] loop ok. (276) +[child] loop ok. (276) +[parent] loop ok. (277) +[child] loop ok. (277) +[parent] loop ok. (278) +[child] loop ok. (278) +[parent] loop ok. (279) +[child] loop ok. (279) +[parent] loop ok. (280) +[child] loop ok. (280) +[parent] loop ok. (281) +[child] loop ok. (281) +[parent] loop ok. (282) +[child] loop ok. (282) +[parent] loop ok. (283) +[child] loop ok. (283) +[parent] loop ok. (284) +[child] loop ok. (284) +[parent] loop ok. (285) +[child] loop ok. (285) +[parent] loop ok. (286) +[child] loop ok. (286) +[parent] loop ok. (287) +[child] loop ok. (287) +[parent] loop ok. (288) +[child] loop ok. (288) +[parent] loop ok. (289) +[child] loop ok. (289) +[parent] loop ok. (290) +[child] loop ok. (290) +[parent] loop ok. (291) +[child] loop ok. (291) +[parent] loop ok. (292) +[child] loop ok. (292) +[parent] loop ok. (293) +[child] loop ok. (293) +[parent] loop ok. (294) +[child] loop ok. (294) +[parent] loop ok. (295) +[child] loop ok. (295) +[parent] loop ok. (296) +[child] loop ok. (296) +[parent] loop ok. (297) +[child] loop ok. (297) +[parent] loop ok. (298) +[child] loop ok. (298) +[parent] loop ok. (299) +[child] loop ok. (299) +[parent] loop ok. (300) +[child] loop ok. (300) +[parent] loop ok. (301) +[child] loop ok. (301) +[parent] loop ok. (302) +[child] loop ok. (302) +[parent] loop ok. (303) +[child] loop ok. (303) +[parent] loop ok. (304) +[child] loop ok. (304) +send SIGKILL +[parent] loop ok. (305) +[child] loop ok. (305) +Script done, file is C1410T01.log +*** C1410T01 PASS ng=0 ok=5 +mcstop+release.sh ... done +mcreboot.sh -c 1-7,9-15,17-23,25-31 -m 10G@0,10G@1 -r 1-7:0+9-15:8+17-23:16+25-31:24 ... done +*** C1420T01: START +. +. +. +send SIGSTOP +send SIGCONT +. +. +. +send SIGINT +*** C1420T01 PASS: child terminated by signal 2 +kill01 1 TPASS : received expected signal 9 +*** C1410T02: kill01 PASS (1) +kill02 1 TPASS : The signal was sent to all processes in the process group. +kill02 2 TPASS : The signal was not sent to selective processes that were not in the process group. +*** C1410T03: kill02 PASS (2) +kill06 1 TPASS : received expected signal 9 +*** C1410T04: kill06 PASS (1) +kill07 0 TINFO : received expected signal 9 +kill07 1 TPASS : Did not catch signal as expected +*** C1410T05: kill07 PASS (1) +kill08 1 TPASS : received expected signal 9 +*** C1410T06: kill08 PASS (1) +kill09 1 TPASS : kill(10983, SIGKILL) returned 0 +*** C1410T07: kill09 PASS (1) +signal03 1 TPASS : signal03 call succeeded +signal03 2 TPASS : signal03 call succeeded +signal03 3 TPASS : signal03 call succeeded +signal03 4 TPASS : signal03 call succeeded +signal03 5 TPASS : signal03 call succeeded +signal03 6 TPASS : signal03 call succeeded +signal03 7 TPASS : signal03 call succeeded +signal03 8 TPASS : signal03 call succeeded +signal03 9 TPASS : signal03 call succeeded +signal03 10 TPASS : signal03 call succeeded +signal03 11 TPASS : signal03 call succeeded +signal03 12 TPASS : signal03 call succeeded +signal03 13 TPASS : signal03 call succeeded +signal03 14 TPASS : signal03 call succeeded +signal03 15 TPASS : signal03 call succeeded +signal03 16 TPASS : signal03 call succeeded +signal03 17 TPASS : signal03 call succeeded +signal03 18 TPASS : signal03 call succeeded +signal03 19 TPASS : signal03 call succeeded +signal03 20 TPASS : signal03 call succeeded +signal03 21 TPASS : signal03 call succeeded +signal03 22 TPASS : signal03 call succeeded +signal03 23 TPASS : signal03 call succeeded +signal03 24 TPASS : signal03 call succeeded +signal03 25 TPASS : signal03 call succeeded +signal03 26 TPASS : signal03 call succeeded +signal03 27 TPASS : signal03 call succeeded +signal03 28 TPASS : signal03 call succeeded +signal03 29 TPASS : signal03 call succeeded +signal03 30 TPASS : signal03 call succeeded +signal03 31 TPASS : signal03 call succeeded +*** C1410T08: signal03 PASS (31) +signal04 1 TPASS : signal04 call succeeded received (nil). +signal04 2 TPASS : signal04 call succeeded received (nil). +signal04 3 TPASS : signal04 call succeeded received (nil). +signal04 4 TPASS : signal04 call succeeded received (nil). +signal04 5 TPASS : signal04 call succeeded received (nil). +signal04 6 TPASS : signal04 call succeeded received (nil). +signal04 7 TPASS : signal04 call succeeded received (nil). +signal04 8 TPASS : signal04 call succeeded received (nil). +signal04 9 TPASS : signal04 call succeeded received (nil). +signal04 10 TPASS : signal04 call succeeded received (nil). +signal04 11 TPASS : signal04 call succeeded received (nil). +signal04 12 TPASS : signal04 call succeeded received (nil). +signal04 13 TPASS : signal04 call succeeded received (nil). +signal04 14 TPASS : signal04 call succeeded received (nil). +signal04 15 TPASS : signal04 call succeeded received (nil). +signal04 16 TPASS : signal04 call succeeded received (nil). +signal04 17 TPASS : signal04 call succeeded received (nil). +signal04 18 TPASS : signal04 call succeeded received (nil). +signal04 19 TPASS : signal04 call succeeded received (nil). +signal04 20 TPASS : signal04 call succeeded received (nil). +signal04 21 TPASS : signal04 call succeeded received (nil). +signal04 22 TPASS : signal04 call succeeded received (nil). +signal04 23 TPASS : signal04 call succeeded received (nil). +signal04 24 TPASS : signal04 call succeeded received (nil). +signal04 25 TPASS : signal04 call succeeded received (nil). +signal04 26 TPASS : signal04 call succeeded received (nil). +signal04 27 TPASS : signal04 call succeeded received (nil). +signal04 28 TPASS : signal04 call succeeded received (nil). +*** C1410T09: signal04 PASS (28) +signal05 1 TPASS : signal05 call succeeded +signal05 2 TPASS : signal05 call succeeded +signal05 3 TPASS : signal05 call succeeded +signal05 4 TPASS : signal05 call succeeded +signal05 5 TPASS : signal05 call succeeded +signal05 6 TPASS : signal05 call succeeded +signal05 7 TPASS : signal05 call succeeded +signal05 8 TPASS : signal05 call succeeded +signal05 9 TPASS : signal05 call succeeded +signal05 10 TPASS : signal05 call succeeded +signal05 11 TPASS : signal05 call succeeded +signal05 12 TPASS : signal05 call succeeded +signal05 13 TPASS : signal05 call succeeded +signal05 14 TPASS : signal05 call succeeded +signal05 15 TPASS : signal05 call succeeded +signal05 16 TPASS : signal05 call succeeded +signal05 17 TPASS : signal05 call succeeded +signal05 18 TPASS : signal05 call succeeded +signal05 19 TPASS : signal05 call succeeded +signal05 20 TPASS : signal05 call succeeded +signal05 21 TPASS : signal05 call succeeded +signal05 22 TPASS : signal05 call succeeded +signal05 23 TPASS : signal05 call succeeded +signal05 24 TPASS : signal05 call succeeded +signal05 25 TPASS : signal05 call succeeded +signal05 26 TPASS : signal05 call succeeded +signal05 27 TPASS : signal05 call succeeded +signal05 28 TPASS : signal05 call succeeded +signal05 29 TPASS : signal05 call succeeded +signal05 30 TPASS : signal05 call succeeded +signal05 31 TPASS : signal05 call succeeded +*** C1410T10: signal05 PASS (31) +bash-4.2$ exit +exit + +Script done on Mon Dec 2 09:27:54 2019 diff --git a/test/issues/1410+1420/C1420T01.c b/test/issues/1410+1420/C1420T01.c new file mode 100644 index 00000000..4882e66d --- /dev/null +++ b/test/issues/1410+1420/C1420T01.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include +#include + +void +cont(int s) +{ + printf("SIGCONT\n"); + exit(1); +} + +void +child() +{ + int mask; + + mask = sigmask(SIGCONT); + sigprocmask(SIG_BLOCK, (sigset_t *)&mask, NULL); + signal(SIGCONT, cont); + for (;;) { + printf(".\n"); + sleep(1); + } +} + +int +main(int argc, char **argv) +{ + pid_t pid = fork(); + int st; + + if (!pid) + child(); + printf("*** C1420T01: START\n"); + sleep(3); + printf("send SIGSTOP\n"); + kill(pid, SIGSTOP); + sleep(3); + printf("send SIGCONT\n"); + kill(pid, SIGCONT); + sleep(3); + printf("send SIGINT\n"); + kill(pid, SIGINT); + waitpid(pid, &st, 0); + printf("*** C1420T01 "); + if (WIFEXITED(st)) { + printf("FAIL: child exited st=%d\n", WEXITSTATUS(st)); + } + else if (WIFSIGNALED(st)) { + if (WTERMSIG(st) == SIGINT) { + printf("PASS"); + } + else { + printf("FAIL"); + } + printf(": child terminated by signal %d\n", WTERMSIG(st)); + } + else { + printf("FAIL: child status=%08x\n", st); + } + exit(0); +} diff --git a/test/issues/1410+1420/Makefile b/test/issues/1410+1420/Makefile new file mode 100644 index 00000000..1df782a1 --- /dev/null +++ b/test/issues/1410+1420/Makefile @@ -0,0 +1,20 @@ +CC = gcc +TARGET = C1410T01 C1420T01 + +all:: $(TARGET) + +C1410T01: C1410T01.c + if [ `uname -m` = x86_64 ]; then \ + $(CC) -g -Wall -o $@ $^ -lpthread ;\ + else \ + $(CC) -DPAUSE_INST=\"yield\" -g -Wall -o $@ $^ -lpthread ;\ + fi + +C1420T01: C1420T01.c + $(CC) -g -Wall -o $@ $^ + +test:: all + sh ./C1410.sh + +clean:: + rm -f $(TARGET) *.o diff --git a/test/issues/1410+1420/README b/test/issues/1410+1420/README new file mode 100644 index 00000000..691181d7 --- /dev/null +++ b/test/issues/1410+1420/README @@ -0,0 +1,31 @@ +【Issue#1410 動作確認】 +□ テスト内容 +1. Issue 指摘事項の再現確認 +C1410T01 McKernelに1CPU割り当てた状態で、2つのmcexecにSIGSTOPとSIGCONTを + 送ったときプロセスが再開することを確認する。実行の結果PASSすること。 +C1420T01 SIGCONTをマスクした状態でプロセスを停止し、その後SIGCONTを送付して + プロセスが再開することを確認する。実行の結果PASSすること。 + +2. LTP を用いて既存処理に影響しないことを確認 + シグナル関連処理を変更したため、関連するシステムコールのテストを選定した。 + 全てPASSすること。 +C1410T02 kill01: kill の基本機能の確認 +C1410T03 kill02: kill の基本機能の確認 +C1410T04 kill06: kill の基本機能の確認 +C1410T05 kill07: kill の基本機能の確認 +C1410T06 kill08: kill の基本機能の確認 +C1410T07 kill09: kill の基本機能の確認 +C1410T08 signal03: signal の基本機能の確認 +C1410T09 signal04: signal の基本機能の確認 +C1410T10 signal05: signal の基本機能の確認 + +□ 実行手順 +$ make test + +McKernelのインストール先や LTP の配置場所は、$HOME/.mck_test_config を +参照する。.mck_test_config は、McKernel をビルドした際に生成される +mck_test_config.sample ファイルを $HOME にコピーし、適宜編集すること。 + +□ 実行結果 +C1410_x86_64.txt(x86_64実行結果)、C1410_arm64.txt(arm64実行結果) 参照。 +全ての項目が PASS していることを確認。