fix: fork's race-condition caused by child and grand-child
Refs: #1329 Change-Id: Ia2d7641d1203f40155fef5db718d1bb2c583c1c5
This commit is contained in:
committed by
Masamichi Takagi
parent
5b26fe2956
commit
911b07f507
@@ -4120,19 +4120,22 @@ gettid_out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
fork_child_sync_pipe:
|
fork_child_sync_pipe:
|
||||||
sem_post(&fs->sem);
|
/* clear fork_sync inherited from parent */
|
||||||
sem_destroy(&fs->sem);
|
|
||||||
if (fs->status)
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
for (fp = fork_sync_top; fp;) {
|
for (fp = fork_sync_top; fp;) {
|
||||||
fb = fp->next;
|
fb = fp->next;
|
||||||
if (fp->fs && fp->fs != fs)
|
if (fp->fs && fp->fs != fs) {
|
||||||
munmap(fp->fs, sizeof(struct fork_sync));
|
munmap(fp->fs, sizeof(struct fork_sync));
|
||||||
|
}
|
||||||
free(fp);
|
free(fp);
|
||||||
fp = fb;
|
fp = fb;
|
||||||
}
|
}
|
||||||
fork_sync_top = NULL;
|
fork_sync_top = NULL;
|
||||||
|
|
||||||
|
sem_post(&fs->sem);
|
||||||
|
if (fs->status) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
pthread_mutex_init(&fork_sync_mutex, NULL);
|
pthread_mutex_init(&fork_sync_mutex, NULL);
|
||||||
|
|
||||||
/* TODO: does the forked thread run in a pthread context? */
|
/* TODO: does the forked thread run in a pthread context? */
|
||||||
@@ -4145,6 +4148,7 @@ fork_child_sync_pipe:
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sem_destroy(&fs->sem);
|
||||||
munmap(fs, sizeof(struct fork_sync));
|
munmap(fs, sizeof(struct fork_sync));
|
||||||
#if 1 /* debug : thread killed by exit_group() are still joinable? */
|
#if 1 /* debug : thread killed by exit_group() are still joinable? */
|
||||||
join_all_threads();
|
join_all_threads();
|
||||||
|
|||||||
@@ -1,172 +0,0 @@
|
|||||||
i*** C1324+1329T01 start *******************************
|
|
||||||
[OK] fork is successful
|
|
||||||
[OK] POKED value is correct!!
|
|
||||||
[OK] child exited normaly
|
|
||||||
*** C1324+1329T01 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T02 start *******************************
|
|
||||||
[OK] sigaltstack 1st is successful
|
|
||||||
[OK] sigaltstack 2nd is successful
|
|
||||||
*** C1324+1329T02 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T03 start *******************************
|
|
||||||
[OK] value read by proc_mem is correct
|
|
||||||
*** C1324+1329T03 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T04 start *******************************
|
|
||||||
fork14 1 TPASS : fork failed as expected.
|
|
||||||
*** C1324+1329T04 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T05 start *******************************
|
|
||||||
fork01 1 TPASS : fork() returned 35497
|
|
||||||
fork01 2 TPASS : child pid and fork() return agree: 35497
|
|
||||||
*** C1324+1329T05 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T06 start *******************************
|
|
||||||
fork02 0 TINFO : Inside parent
|
|
||||||
fork02 0 TINFO : exit status of wait 0
|
|
||||||
fork02 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T06 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T07 start *******************************
|
|
||||||
fork03 0 TINFO : process id in parent of child from fork : 35581
|
|
||||||
fork03 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T07 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T08 start *******************************
|
|
||||||
fork04 1 TPASS : Env var TERM unchanged after fork(): xterm
|
|
||||||
fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set
|
|
||||||
fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04
|
|
||||||
*** C1324+1329T08 PASSED (3)
|
|
||||||
|
|
||||||
*** C1324+1329T09 start *******************************
|
|
||||||
fork05 0 TINFO : %fs test only for ix86
|
|
||||||
*** C1324+1329T09 PASSED (0)
|
|
||||||
|
|
||||||
*** C1324+1329T10 start *******************************
|
|
||||||
fork06 0 TINFO : tries 1000
|
|
||||||
fork06 0 TINFO : successes 1000
|
|
||||||
fork06 0 TINFO : failures 0
|
|
||||||
fork06 0 TINFO : There were no children to wait for
|
|
||||||
*** C1324+1329T10 PASSED (0)
|
|
||||||
|
|
||||||
*** C1324+1329T11 start *******************************
|
|
||||||
fork07 0 TINFO : Forking 100 children
|
|
||||||
fork07 0 TINFO : Forked all 100 children, now collecting
|
|
||||||
fork07 0 TINFO : Collected all 100 children
|
|
||||||
fork07 1 TPASS : 100/100 children read correctly from an inheritted fd
|
|
||||||
*** C1324+1329T11 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T12 start *******************************
|
|
||||||
fork08 0 TINFO : parent forksval: 1
|
|
||||||
fork08 0 TINFO : second child got char: b
|
|
||||||
fork08 1 TPASS : Test passed in childnumber 2
|
|
||||||
fork08 0 TINFO : parent forksval: 1
|
|
||||||
fork08 0 TINFO : parent forksval: 2
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 1 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 2 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 3 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : Number of processes forked is 2
|
|
||||||
*** C1324+1329T12 PASSED (4)
|
|
||||||
|
|
||||||
*** C1324+1329T13 start *******************************
|
|
||||||
fork09 0 TINFO : OPEN_MAX is 1024
|
|
||||||
fork09 0 TINFO : first file descriptor is 8
|
|
||||||
fork09 0 TINFO : Parent reporting 1023 files open
|
|
||||||
fork09 0 TINFO : Child opened new file #1023
|
|
||||||
fork09 0 TINFO : OPEN_MAX is 1024
|
|
||||||
fork09 0 TINFO : first file descriptor is 8
|
|
||||||
fork09 0 TINFO : Parent reporting 1023 files open
|
|
||||||
fork09 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T13 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T14 start *******************************
|
|
||||||
fork10 0 TINFO : fork child A
|
|
||||||
fork10 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T14 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T15 start *******************************
|
|
||||||
fork11 1 TPASS : fork test passed, 100 processes
|
|
||||||
*** C1324+1329T15 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T16 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl01.c:50: PASS: msgctl(IPC_STAT)
|
|
||||||
msgctl01.c:53: PASS: msg_stime = 0
|
|
||||||
msgctl01.c:58: PASS: msg_rtime = 0
|
|
||||||
msgctl01.c:64: PASS: msg_ctime = 1574829452, expected 1574829452
|
|
||||||
msgctl01.c:71: PASS: msg_qnum = 0
|
|
||||||
msgctl01.c:76: PASS: msg_qbytes = 16384
|
|
||||||
msgctl01.c:81: PASS: msg_lspid = 0
|
|
||||||
msgctl01.c:86: PASS: msg_lrpid = 0
|
|
||||||
msgctl01.c:91: PASS: msg_perm.__key == 1627857601
|
|
||||||
msgctl01.c:98: PASS: msg_perm.uid = 0
|
|
||||||
msgctl01.c:105: PASS: msg_perm.gid = 0
|
|
||||||
msgctl01.c:112: PASS: msg_perm.cuid = 0
|
|
||||||
msgctl01.c:119: PASS: msg_perm.cgid = 0
|
|
||||||
msgctl01.c:126: PASS: msg_perm.mode = 0660
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 14
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T16 PASSED (14)
|
|
||||||
|
|
||||||
*** C1324+1329T17 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl02.c:47: PASS: msgctl(IPC_SET) msg_qbytes - 1
|
|
||||||
msgctl02.c:54: PASS: msg_qbytes = 16383
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 2
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T17 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T18 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl03.c:40: PASS: msgctl(IPC_RMID)
|
|
||||||
msgctl03.c:44: PASS: msgctl(IPC_STAT): EINVAL
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 2
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T18 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T19 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl04.c:72: PASS: msgctl(131073, 2, 0x432e60): EACCES
|
|
||||||
msgctl04.c:72: PASS: msgctl(163842, 2, 0xffffffffffffffff): EFAULT
|
|
||||||
msgctl04.c:72: PASS: msgctl(163842, 1, 0xffffffffffffffff): EFAULT
|
|
||||||
msgctl04.c:72: PASS: msgctl(163842, -1, 0x432e60): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(-1, 2, 0x432e60): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(-1, 1, 0x432e60): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(98304, 0, (nil)): EPERM
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 7
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T19 PASSED (7)
|
|
||||||
|
|
||||||
*** C1324+1329T20 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl12.c:54: PASS: msgctl() test IPC_INFO succeeded
|
|
||||||
msgctl12.c:54: PASS: msgctl() test MSG_INFO succeeded
|
|
||||||
msgctl12.c:54: PASS: msgctl() test MSG_STAT succeeded
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 3
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T20 PASSED (3)
|
|
||||||
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
*** C1324+1329T01 start *******************************
|
|
||||||
[OK] fork is successful
|
|
||||||
[OK] POKED value is correct!!
|
|
||||||
[OK] child exited normaly
|
|
||||||
*** C1324+1329T01 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T02 start *******************************
|
|
||||||
[OK] sigaltstack 1st is successful
|
|
||||||
[OK] sigaltstack 2nd is successful
|
|
||||||
*** C1324+1329T02 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T03 start *******************************
|
|
||||||
[OK] value read by proc_mem is correct
|
|
||||||
*** C1324+1329T03 PASSED ******************************
|
|
||||||
|
|
||||||
*** C1324+1329T04 start *******************************
|
|
||||||
fork14 1 TPASS : fork failed as expected.
|
|
||||||
*** C1324+1329T04 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T05 start *******************************
|
|
||||||
fork01 1 TPASS : fork() returned 12305
|
|
||||||
fork01 2 TPASS : child pid and fork() return agree: 12305
|
|
||||||
*** C1324+1329T05 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T06 start *******************************
|
|
||||||
fork02 0 TINFO : Inside parent
|
|
||||||
fork02 0 TINFO : exit status of wait 0
|
|
||||||
fork02 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T06 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T07 start *******************************
|
|
||||||
fork03 0 TINFO : process id in parent of child from fork : 12365
|
|
||||||
fork03 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T07 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T08 start *******************************
|
|
||||||
fork04 1 TPASS : Env var TERM unchanged after fork(): xterm-256color
|
|
||||||
fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set
|
|
||||||
fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04
|
|
||||||
*** C1324+1329T08 PASSED (3)
|
|
||||||
|
|
||||||
*** C1324+1329T09 start *******************************
|
|
||||||
fork05 0 TINFO : %fs test only for ix86
|
|
||||||
*** C1324+1329T09 PASSED (0)
|
|
||||||
|
|
||||||
*** C1324+1329T10 start *******************************
|
|
||||||
fork06 0 TINFO : tries 1000
|
|
||||||
fork06 0 TINFO : successes 1000
|
|
||||||
fork06 0 TINFO : failures 0
|
|
||||||
fork06 0 TINFO : There were no children to wait for
|
|
||||||
*** C1324+1329T10 PASSED (0)
|
|
||||||
|
|
||||||
*** C1324+1329T11 start *******************************
|
|
||||||
fork07 0 TINFO : Forking 100 children
|
|
||||||
fork07 0 TINFO : Forked all 100 children, now collecting
|
|
||||||
fork07 0 TINFO : Collected all 100 children
|
|
||||||
fork07 1 TPASS : 100/100 children read correctly from an inheritted fd
|
|
||||||
*** C1324+1329T11 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T12 start *******************************
|
|
||||||
fork08 0 TINFO : parent forksval: 1
|
|
||||||
fork08 0 TINFO : second child got char: b
|
|
||||||
fork08 1 TPASS : Test passed in childnumber 2
|
|
||||||
fork08 0 TINFO : parent forksval: 1
|
|
||||||
fork08 0 TINFO : parent forksval: 2
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 1 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 2 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : exit status of wait expected 0 got 0
|
|
||||||
fork08 3 TPASS : parent test PASSED
|
|
||||||
fork08 0 TINFO : Number of processes forked is 2
|
|
||||||
*** C1324+1329T12 PASSED (4)
|
|
||||||
|
|
||||||
*** C1324+1329T13 start *******************************
|
|
||||||
fork09 0 TINFO : OPEN_MAX is 1024
|
|
||||||
fork09 0 TINFO : first file descriptor is 8
|
|
||||||
fork09 0 TINFO : Parent reporting 1023 files open
|
|
||||||
fork09 0 TINFO : Child opened new file #1023
|
|
||||||
fork09 0 TINFO : OPEN_MAX is 1024
|
|
||||||
fork09 0 TINFO : first file descriptor is 8
|
|
||||||
fork09 0 TINFO : Parent reporting 1023 files open
|
|
||||||
fork09 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T13 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T14 start *******************************
|
|
||||||
fork10 0 TINFO : fork child A
|
|
||||||
fork10 1 TPASS : test 1 PASSED
|
|
||||||
*** C1324+1329T14 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T15 start *******************************
|
|
||||||
fork11 1 TPASS : fork test passed, 100 processes
|
|
||||||
*** C1324+1329T15 PASSED (1)
|
|
||||||
|
|
||||||
*** C1324+1329T16 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl01.c:50: PASS: msgctl(IPC_STAT)
|
|
||||||
msgctl01.c:53: PASS: msg_stime = 0
|
|
||||||
msgctl01.c:58: PASS: msg_rtime = 0
|
|
||||||
msgctl01.c:64: PASS: msg_ctime = 1574819699, expected 1574819699
|
|
||||||
msgctl01.c:71: PASS: msg_qnum = 0
|
|
||||||
msgctl01.c:76: PASS: msg_qbytes = 16384
|
|
||||||
msgctl01.c:81: PASS: msg_lspid = 0
|
|
||||||
msgctl01.c:86: PASS: msg_lrpid = 0
|
|
||||||
msgctl01.c:91: PASS: msg_perm.__key == 1627586573
|
|
||||||
msgctl01.c:98: PASS: msg_perm.uid = 0
|
|
||||||
msgctl01.c:105: PASS: msg_perm.gid = 0
|
|
||||||
msgctl01.c:112: PASS: msg_perm.cuid = 0
|
|
||||||
msgctl01.c:119: PASS: msg_perm.cgid = 0
|
|
||||||
msgctl01.c:126: PASS: msg_perm.mode = 0660
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 14
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T16 PASSED (14)
|
|
||||||
|
|
||||||
*** C1324+1329T17 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl02.c:47: PASS: msgctl(IPC_SET) msg_qbytes - 1
|
|
||||||
msgctl02.c:54: PASS: msg_qbytes = 16383
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 2
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T17 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T18 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl03.c:40: PASS: msgctl(IPC_RMID)
|
|
||||||
msgctl03.c:44: PASS: msgctl(IPC_STAT): EINVAL
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 2
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T18 PASSED (2)
|
|
||||||
|
|
||||||
*** C1324+1329T19 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl04.c:72: PASS: msgctl(86835201, 2, 0x61cfa0): EACCES
|
|
||||||
msgctl04.c:72: PASS: msgctl(86867971, 2, 0xffffffffffffffff): EFAULT
|
|
||||||
msgctl04.c:72: PASS: msgctl(86867971, 1, 0xffffffffffffffff): EFAULT
|
|
||||||
msgctl04.c:72: PASS: msgctl(86867971, -1, 0x61cfa0): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(-1, 2, 0x61cfa0): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(-1, 1, 0x61cfa0): EINVAL
|
|
||||||
msgctl04.c:72: PASS: msgctl(86802432, 0, (nil)): EPERM
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 7
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T19 PASSED (7)
|
|
||||||
|
|
||||||
*** C1324+1329T20 start *******************************
|
|
||||||
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
|
||||||
msgctl12.c:54: PASS: msgctl() test IPC_INFO succeeded
|
|
||||||
msgctl12.c:54: PASS: msgctl() test MSG_INFO succeeded
|
|
||||||
msgctl12.c:54: PASS: msgctl() test MSG_STAT succeeded
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
passed 3
|
|
||||||
failed 0
|
|
||||||
skipped 0
|
|
||||||
warnings 0
|
|
||||||
*** C1324+1329T20 PASSED (3)
|
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ BOOTPARAM="-m 1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1
|
|||||||
|
|
||||||
. ../../common.sh
|
. ../../common.sh
|
||||||
|
|
||||||
issue="1324+1329"
|
issue="1324"
|
||||||
tid=01
|
tid=01
|
||||||
|
|
||||||
for tno in 01 02 03
|
for tno in 01 02 03
|
||||||
@@ -25,7 +25,7 @@ do
|
|||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
|
|
||||||
for tp in fork14 fork01 fork02 fork03 fork04 fork05 fork06 fork07 fork08 fork09 fork10 fork11 msgctl01 msgctl02 msgctl03 msgctl04 msgctl12
|
for tp in fork14 fork01 fork02 fork03 fork04 fork05 fork06 fork07 fork08 fork09 fork10 fork11
|
||||||
do
|
do
|
||||||
tname=`printf "C${issue}T%02d" ${tid}`
|
tname=`printf "C${issue}T%02d" ${tid}`
|
||||||
echo "*** ${tname} start *******************************"
|
echo "*** ${tname} start *******************************"
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
CFLAGS=-g
|
CFLAGS=-g
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
TARGET=C1324+1329T01 C1324+1329T02 C1324+1329T03
|
TARGET=C1324T01 C1324T02 C1324T03
|
||||||
|
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
test: all
|
test: all
|
||||||
./C1324+1329.sh
|
./C1324.sh
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGET) *.o *.txt
|
rm -f $(TARGET) *.o *.txt
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
【Issue#1324,#1329 動作確認】
|
【Issue#1324 動作確認】
|
||||||
□ テスト内容
|
□ テスト内容
|
||||||
本Issueの症状は、以下の操作の際に操作対象メモリの物理メモリが
|
本Issueの症状は、以下の操作の際に操作対象メモリの物理メモリが
|
||||||
McKernelに割り当てられたメモリチャンクの終端になっている場合に発生する
|
McKernelに割り当てられたメモリチャンクの終端になっている場合に発生する
|
||||||
@@ -35,7 +35,7 @@ C1324+1329T03:
|
|||||||
2. 以下のLTPを用いてIssueで報告された症状が発生しないことを確認
|
2. 以下のLTPを用いてIssueで報告された症状が発生しないことを確認
|
||||||
- fork14
|
- fork14
|
||||||
|
|
||||||
3. 以下のLTPを用いて既存のfork,msgctl機能に影響が無いことを確認
|
3. 以下のLTPを用いて既存のfork機能に影響が無いことを確認
|
||||||
- fork01
|
- fork01
|
||||||
- fork02
|
- fork02
|
||||||
- fork03
|
- fork03
|
||||||
@@ -47,11 +47,6 @@ C1324+1329T03:
|
|||||||
- fork09
|
- fork09
|
||||||
- fork10
|
- fork10
|
||||||
- fork11
|
- fork11
|
||||||
- msgctl01
|
|
||||||
- msgctl02
|
|
||||||
- msgctl03
|
|
||||||
- msgctl04
|
|
||||||
- msgctl12
|
|
||||||
|
|
||||||
□ 実行手順
|
□ 実行手順
|
||||||
$ make test
|
$ make test
|
||||||
94
test/issues/1324/aarch64_result.log
Normal file
94
test/issues/1324/aarch64_result.log
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
*** C1324T01 start *******************************
|
||||||
|
[OK] fork is successful
|
||||||
|
[OK] POKED value is correct!!
|
||||||
|
[OK] child exited normaly
|
||||||
|
*** C1324T01 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T02 start *******************************
|
||||||
|
[OK] sigaltstack 1st is successful
|
||||||
|
[OK] sigaltstack 2nd is successful
|
||||||
|
*** C1324T02 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T03 start *******************************
|
||||||
|
[OK] value read by proc_mem is correct
|
||||||
|
*** C1324T03 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T04 start *******************************
|
||||||
|
fork14 1 TPASS : fork failed as expected.
|
||||||
|
*** C1324T04 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T05 start *******************************
|
||||||
|
fork01 1 TPASS : fork() returned 35497
|
||||||
|
fork01 2 TPASS : child pid and fork() return agree: 35497
|
||||||
|
*** C1324T05 PASSED (2)
|
||||||
|
|
||||||
|
*** C1324T06 start *******************************
|
||||||
|
fork02 0 TINFO : Inside parent
|
||||||
|
fork02 0 TINFO : exit status of wait 0
|
||||||
|
fork02 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T06 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T07 start *******************************
|
||||||
|
fork03 0 TINFO : process id in parent of child from fork : 35581
|
||||||
|
fork03 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T07 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T08 start *******************************
|
||||||
|
fork04 1 TPASS : Env var TERM unchanged after fork(): xterm
|
||||||
|
fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set
|
||||||
|
fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04
|
||||||
|
*** C1324T08 PASSED (3)
|
||||||
|
|
||||||
|
*** C1324T09 start *******************************
|
||||||
|
fork05 0 TINFO : %fs test only for ix86
|
||||||
|
*** C1324T09 PASSED (0)
|
||||||
|
|
||||||
|
*** C1324T10 start *******************************
|
||||||
|
fork06 0 TINFO : tries 1000
|
||||||
|
fork06 0 TINFO : successes 1000
|
||||||
|
fork06 0 TINFO : failures 0
|
||||||
|
fork06 0 TINFO : There were no children to wait for
|
||||||
|
*** C1324T10 PASSED (0)
|
||||||
|
|
||||||
|
*** C1324T11 start *******************************
|
||||||
|
fork07 0 TINFO : Forking 100 children
|
||||||
|
fork07 0 TINFO : Forked all 100 children, now collecting
|
||||||
|
fork07 0 TINFO : Collected all 100 children
|
||||||
|
fork07 1 TPASS : 100/100 children read correctly from an inheritted fd
|
||||||
|
*** C1324T11 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T12 start *******************************
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : second child got char: b
|
||||||
|
fork08 1 TPASS : Test passed in childnumber 2
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : parent forksval: 2
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 1 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 2 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 3 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : Number of processes forked is 2
|
||||||
|
*** C1324T12 PASSED (4)
|
||||||
|
|
||||||
|
*** C1324T13 start *******************************
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 0 TINFO : Child opened new file #1023
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T13 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T14 start *******************************
|
||||||
|
fork10 0 TINFO : fork child A
|
||||||
|
fork10 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T14 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T15 start *******************************
|
||||||
|
fork11 1 TPASS : fork test passed, 100 processes
|
||||||
|
*** C1324T15 PASSED (1)
|
||||||
|
|
||||||
94
test/issues/1324/x86_64_result.log
Normal file
94
test/issues/1324/x86_64_result.log
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
*** C1324T01 start *******************************
|
||||||
|
[OK] fork is successful
|
||||||
|
[OK] POKED value is correct!!
|
||||||
|
[OK] child exited normaly
|
||||||
|
*** C1324T01 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T02 start *******************************
|
||||||
|
[OK] sigaltstack 1st is successful
|
||||||
|
[OK] sigaltstack 2nd is successful
|
||||||
|
*** C1324T02 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T03 start *******************************
|
||||||
|
[OK] value read by proc_mem is correct
|
||||||
|
*** C1324T03 PASSED ******************************
|
||||||
|
|
||||||
|
*** C1324T04 start *******************************
|
||||||
|
fork14 1 TPASS : fork failed as expected.
|
||||||
|
*** C1324T04 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T05 start *******************************
|
||||||
|
fork01 1 TPASS : fork() returned 12305
|
||||||
|
fork01 2 TPASS : child pid and fork() return agree: 12305
|
||||||
|
*** C1324T05 PASSED (2)
|
||||||
|
|
||||||
|
*** C1324T06 start *******************************
|
||||||
|
fork02 0 TINFO : Inside parent
|
||||||
|
fork02 0 TINFO : exit status of wait 0
|
||||||
|
fork02 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T06 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T07 start *******************************
|
||||||
|
fork03 0 TINFO : process id in parent of child from fork : 12365
|
||||||
|
fork03 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T07 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T08 start *******************************
|
||||||
|
fork04 1 TPASS : Env var TERM unchanged after fork(): xterm-256color
|
||||||
|
fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set
|
||||||
|
fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04
|
||||||
|
*** C1324T08 PASSED (3)
|
||||||
|
|
||||||
|
*** C1324T09 start *******************************
|
||||||
|
fork05 0 TINFO : %fs test only for ix86
|
||||||
|
*** C1324T09 PASSED (0)
|
||||||
|
|
||||||
|
*** C1324T10 start *******************************
|
||||||
|
fork06 0 TINFO : tries 1000
|
||||||
|
fork06 0 TINFO : successes 1000
|
||||||
|
fork06 0 TINFO : failures 0
|
||||||
|
fork06 0 TINFO : There were no children to wait for
|
||||||
|
*** C1324T10 PASSED (0)
|
||||||
|
|
||||||
|
*** C1324T11 start *******************************
|
||||||
|
fork07 0 TINFO : Forking 100 children
|
||||||
|
fork07 0 TINFO : Forked all 100 children, now collecting
|
||||||
|
fork07 0 TINFO : Collected all 100 children
|
||||||
|
fork07 1 TPASS : 100/100 children read correctly from an inheritted fd
|
||||||
|
*** C1324T11 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T12 start *******************************
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : second child got char: b
|
||||||
|
fork08 1 TPASS : Test passed in childnumber 2
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : parent forksval: 2
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 1 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 2 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 3 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : Number of processes forked is 2
|
||||||
|
*** C1324T12 PASSED (4)
|
||||||
|
|
||||||
|
*** C1324T13 start *******************************
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 0 TINFO : Child opened new file #1023
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T13 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T14 start *******************************
|
||||||
|
fork10 0 TINFO : fork child A
|
||||||
|
fork10 1 TPASS : test 1 PASSED
|
||||||
|
*** C1324T14 PASSED (1)
|
||||||
|
|
||||||
|
*** C1324T15 start *******************************
|
||||||
|
fork11 1 TPASS : fork test passed, 100 processes
|
||||||
|
*** C1324T15 PASSED (1)
|
||||||
|
|
||||||
43
test/issues/1329/C1329.sh
Executable file
43
test/issues/1329/C1329.sh
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#/bin/sh
|
||||||
|
|
||||||
|
USELTP=1
|
||||||
|
USEOSTEST=0
|
||||||
|
|
||||||
|
. ../../common.sh
|
||||||
|
|
||||||
|
issue="1329"
|
||||||
|
tid=01
|
||||||
|
|
||||||
|
if [ `uname -p` == "x86_64" ]; then
|
||||||
|
tname=`printf "C${issue}T%02d" ${tid}`
|
||||||
|
echo "*** ${tname} start *******************************"
|
||||||
|
for idx in `seq 1 300`;
|
||||||
|
do
|
||||||
|
echo "*** Rep: $idx ***"
|
||||||
|
echo -n "** Start:"
|
||||||
|
date "+%H:%M:%S"
|
||||||
|
|
||||||
|
sudo $MCEXEC $LTPBIN/msgctl11
|
||||||
|
echo -n "** Done:"
|
||||||
|
date "+%H:%M:%S"
|
||||||
|
done
|
||||||
|
echo "*** ${tname} PASSED"
|
||||||
|
fi
|
||||||
|
let tid++
|
||||||
|
|
||||||
|
for tp in fork01 fork02 fork03 fork04 fork05 fork06 fork07 fork08 fork09 fork10 fork11
|
||||||
|
do
|
||||||
|
tname=`printf "C${issue}T%02d" ${tid}`
|
||||||
|
echo "*** ${tname} start *******************************"
|
||||||
|
sudo $MCEXEC $LTPBIN/$tp 2>&1 | tee $tp.txt
|
||||||
|
ok=`grep PASS $tp.txt | wc -l`
|
||||||
|
ng=`grep FAIL $tp.txt | wc -l`
|
||||||
|
if [ $ng = 0 ]; then
|
||||||
|
echo "*** ${tname} PASSED ($ok)"
|
||||||
|
else
|
||||||
|
echo "*** ${tname} FAILED (ok=$ok ng=%ng)"
|
||||||
|
fi
|
||||||
|
let tid++
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
9
test/issues/1329/Makefile
Normal file
9
test/issues/1329/Makefile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CFLAGS=-g
|
||||||
|
LDFLAGS=
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
test: all
|
||||||
|
./C1329.sh
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGET) *.o *.txt
|
||||||
30
test/issues/1329/README
Normal file
30
test/issues/1329/README
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
【Issue#1329 動作確認】
|
||||||
|
□ テスト内容
|
||||||
|
1. 以下のLTPを300回連続実行し、Issueで報告された症状が発生しないことを確認
|
||||||
|
- msgctl11
|
||||||
|
なお、本テストケースはapollo上では別の不具合によりテストが動作しないため、テスト対象から除外した
|
||||||
|
|
||||||
|
2. 以下のLTPを用いて既存のfork機能に影響が無いことを確認
|
||||||
|
- fork01
|
||||||
|
- fork02
|
||||||
|
- fork03
|
||||||
|
- fork04
|
||||||
|
- fork05
|
||||||
|
- fork06
|
||||||
|
- fork07
|
||||||
|
- fork08
|
||||||
|
- fork09
|
||||||
|
- fork10
|
||||||
|
- fork11
|
||||||
|
|
||||||
|
□ 実行手順
|
||||||
|
$ make test
|
||||||
|
|
||||||
|
McKernelのインストール先や、OSTEST, LTPの配置場所は、
|
||||||
|
$HOME/.mck_test_config を参照している
|
||||||
|
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
|
||||||
|
$HOMEにコピーし、適宜編集する
|
||||||
|
|
||||||
|
□ 実行結果
|
||||||
|
x86_64_result.log aarch64_result.log 参照。
|
||||||
|
すべての項目をPASSしていることを確認。
|
||||||
75
test/issues/1329/aarch64_result.log
Normal file
75
test/issues/1329/aarch64_result.log
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
*** C1329T02 start *******************************
|
||||||
|
fork01 1 TPASS : fork() returned 20716
|
||||||
|
fork01 2 TPASS : child pid and fork() return agree: 20716
|
||||||
|
*** C1329T02 PASSED (2)
|
||||||
|
|
||||||
|
*** C1329T03 start *******************************
|
||||||
|
fork02 0 TINFO : Inside parent
|
||||||
|
fork02 0 TINFO : exit status of wait 0
|
||||||
|
fork02 1 TPASS : test 1 PASSED
|
||||||
|
*** C1329T03 PASSED (1)
|
||||||
|
|
||||||
|
*** C1329T04 start *******************************
|
||||||
|
fork03 0 TINFO : process id in parent of child from fork : 20856
|
||||||
|
fork03 1 TPASS : test 1 PASSED
|
||||||
|
*** C1329T04 PASSED (1)
|
||||||
|
|
||||||
|
*** C1329T05 start *******************************
|
||||||
|
fork04 1 TPASS : Env var TERM unchanged after fork(): xterm
|
||||||
|
fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set
|
||||||
|
fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04
|
||||||
|
*** C1329T05 PASSED (3)
|
||||||
|
|
||||||
|
*** C1329T06 start *******************************
|
||||||
|
fork05 0 TINFO : %fs test only for ix86
|
||||||
|
*** C1329T06 PASSED (0)
|
||||||
|
|
||||||
|
*** C1329T07 start *******************************
|
||||||
|
fork06 0 TINFO : tries 1000
|
||||||
|
fork06 0 TINFO : successes 1000
|
||||||
|
fork06 0 TINFO : failures 0
|
||||||
|
fork06 0 TINFO : There were no children to wait for
|
||||||
|
*** C1329T07 PASSED (0)
|
||||||
|
|
||||||
|
*** C1329T08 start *******************************
|
||||||
|
fork07 0 TINFO : Forking 100 children
|
||||||
|
fork07 0 TINFO : Forked all 100 children, now collecting
|
||||||
|
fork07 0 TINFO : Collected all 100 children
|
||||||
|
fork07 1 TPASS : 100/100 children read correctly from an inheritted fd
|
||||||
|
*** C1329T08 PASSED (1)
|
||||||
|
|
||||||
|
*** C1329T09 start *******************************
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : second child got char: b
|
||||||
|
fork08 1 TPASS : Test passed in childnumber 2
|
||||||
|
fork08 0 TINFO : parent forksval: 1
|
||||||
|
fork08 0 TINFO : parent forksval: 2
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 1 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 2 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : exit status of wait expected 0 got 0
|
||||||
|
fork08 3 TPASS : parent test PASSED
|
||||||
|
fork08 0 TINFO : Number of processes forked is 2
|
||||||
|
*** C1329T09 PASSED (4)
|
||||||
|
|
||||||
|
*** C1329T10 start *******************************
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 0 TINFO : Child opened new file #1023
|
||||||
|
fork09 0 TINFO : OPEN_MAX is 1024
|
||||||
|
fork09 0 TINFO : first file descriptor is 8
|
||||||
|
fork09 0 TINFO : Parent reporting 1023 files open
|
||||||
|
fork09 1 TPASS : test 1 PASSED
|
||||||
|
*** C1329T10 PASSED (1)
|
||||||
|
|
||||||
|
*** C1329T11 start *******************************
|
||||||
|
fork10 0 TINFO : fork child A
|
||||||
|
fork10 1 TPASS : test 1 PASSED
|
||||||
|
*** C1329T11 PASSED (1)
|
||||||
|
|
||||||
|
*** C1329T12 start *******************************
|
||||||
|
fork11 1 TPASS : fork test passed, 100 processes
|
||||||
|
*** C1329T12 PASSED (1)
|
||||||
|
|
||||||
1875
test/issues/1329/x86_64_result.log
Normal file
1875
test/issues/1329/x86_64_result.log
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user