【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 となっていることを確認。