【Issue#885 動作確認】 Issue#885が解決され、既存機能に影響がないことをIssueで報告されたテストプログラム(2項目)と、 McKernelでのptraceのattach/detach操作の基本動作確認(9項目)の計11項目のテストによって確認した。 なお、各テストの実行結果は./result.log として格納している。 1. Issueで報告されたテストプログラムによる確認 ・Issue#885 (https://postpeta.pccluster.org/redmine/issues/885) 報告で使用されたテストプログラムを用いて、現象が再現しないことを確認した。 実行時の出力を./result.log に記載している 2. McKernelでのptraceのattach/detachの基本動作確認 以下の内容で、Issue#885による変更が既存機能に影響しないことを確認した。 基本動作確認の詳細を以下に示す。 (1) テストの実行方法 以下の手順でテストを実行する 1. Makefileの変数MCK_DIRの内容を、McKernelがインストールされているディレクトリに変更する 2. sh make test を実行する (2) テスト項目 CT_001: 通常のattach detach 操作 1. 親プロセスが子プロセスにattach 2. 親プロセスがwait()で子プロセスの停止を回収 3. 親プロセスが子プロセスをdetach 4. 子プロセスが終了 5. 親プロセスがwait()で子プロセスの終了を回収 CT_002: tracee(子プロセス)がdetachせずに終了 1. 親プロセスが子プロセスにattach 2. 親プロセスがwait()で子プロセスの停止を回収 3. 親プロセスが子プロセスに再開指示(ptrace_cont) 4. 子プロセスが終了 5. 親プロセスがwait()で子プロセスの終了を回収 CT_003: tracer(親プロセス)がdetachしないまま先に終了 1. 親プロセスが子プロセスにattach 2. 親プロセスがwait()で子プロセスの停止を回収 3. 親プロセスが子プロセスに再開指示した直後に終了 4. 子プロセスが終了 CT_004: 複数回のattach -> detach 操作 1. 親プロセスが子プロセスにattach 2. 親プロセスがwait()で子プロセスの停止を回収 3. 親プロセスが子プロセスにdetach 4. 再び、親プロセスが子プロセスにattach 5. 親プロセスがwait()で子プロセスの停止を回収 6. 親プロセスが子プロセスにdetach 7. 親プロセスがwait()で子プロセスの終了を回収 CT_005: 不正なpid指定のattach 1. 不正なpid(0, 1, 負数)を指定したattachが失敗 2. 自身のpidを指定したattachが失敗 CT_006: attach済の子プロセスへのattach① 1. 既にattachしている子プロセスへ再びattachが失敗 CT_007: attach済の子プロセスへのattach② 1. tracemeした子プロセスへattachが失敗 CT_008: 不正なpid指定のdetach 1. 不正なpid(0, 1, 負数)を指定したdetachが失敗 2. attachしていない子プロセスのpidを指定したdetachが失敗 3. 自身のpidを指定したattachが失敗 CT_009: detach済の子プロセスへのdetach 1. 既にdetachしていいる子プロセスへ再びdetach CT_010: 親子関係ではないプロセス間でのattach 1. 親プロセスが2つの子プロセス(tracerプロセス, traceeプロセスとする)をforkする 2. tracerプロセスがtraceeプロセスをattach 3. tracerプロセスがwait()でtraceeプロセスの停止を回収 4. tracerプロセスがtraceeプロセスに再開を指示 5. traceeプロセスが終了する 6. tracerプロセスがtraceeプロセスにdetach 7. tracerプロセスがwait()でtraceeプロセスの終了を回収 8. tracerプロセスが終了 9. 親プロセスがwait()でtracee,tracerプロセスの終了を回収 (3) 結果 テストプログラムの実行結果をresult.log に示す。 上記の11項目がPASSしていることを確認した。