Files
mckernel/test/issues/1165
Ken Sato e803698618 test: Refactor test programs
Change-Id: I77fec2f5f30f6fda3bda6f85ce00f1c2e7f7a9b3
2018-09-25 12:45:20 +09:00
..
2018-09-25 12:45:20 +09:00
2018-09-25 12:45:20 +09:00

【Issue#1165 動作確認】
□ テスト内容
Issue#1165 で指摘されている現象は、以下の理由により既に解消されている。
・ kill および gettid のシステムコールデリゲートは、McKernel と同一PIDを持つ
   mcexec に対して発行するようになっているため、他プロセスの情報を参照する
   ことは無い。
・ 対応する mcexec が終了している状態でシステムコールデリゲートしたとしても、
   mcctrl が適切にエラーを返すため、指摘の現象が発生することは無い。

以上を踏まえ、Issue#1165 では、以下の改修を行った。
・ 他 PID の mcexec にシステムコールデリゲートは発生しない (または解消可能)
   ので、do_syscall と send_syscall のインタフェースから PID 指定を削除する。
・ 他 PID の mcexec にシステムコールデリゲートする以下の処理は、同一 PID の
   mcexec にシステムコールデリゲートするように変更する。
   - fork 後、親プロセスから子プロセスの mcexec に PTE の初期化を依頼する処理

このため、Issue#1165に対して以下のテストを行った。
1. fork 後、子プロセスのシステムコールデリゲートで親プロセスの領域が破壊
   されないことを確認する。
C1165T01 親プロセスが read 後 fork し、子プロセスが同じアドレスの領域に read
         して子プロセスの領域が書き換えられ、親プロセスの領域が書き換えられ
         ないことを確認する。

2. 指摘されたプログラムを実行し、残留プロセスが存在しないことを確認する。
C1165T02 ostest force_exit

3. LTP を用いて、変更が既存処理に影響しないことを確認する (以下の LTP が PASS
   すること)。
C1165T03 clone01
C1165T04 clone03
C1165T05 clone04
C1165T06 clone06
C1165T07 clone07
C1165T08 fork01
C1165T09 fork02
C1165T10 fork03
C1165T11 fork04
C1165T12 fork07
C1165T13 fork08
C1165T14 fork09
C1165T15 fork10

□ 実行手順
$ make test

McKernelのインストール先や、OSTEST, LTPの配置場所は、
$HOME/.mck_test_config を参照している
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
$HOMEにコピーし、適宜編集する

□ 実行結果
C1165.txt 参照。
全ての項目が OK となっていることを確認。