Test "Error handling improvement" on arm64
The following test set: execve: fix memory leak add: NULL check for master_channel at IKC interrupt_handler. Fix the check routine for elf sections (Fujitsu: POSTK_TEMP_FIX_77) Change-Id: I16c2a341c48f6df10a4839be08b93ea16bda8fbe Refs: #727 Refs: #873 Refs: #1011
This commit is contained in:
committed by
Masamichi Takagi
parent
ec844bb6e3
commit
95e90c727e
13
test/error_handling/x86_64/Issue1011/1011.patch
Normal file
13
test/error_handling/x86_64/Issue1011/1011.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/executer/user/mcexec.c b/executer/user/mcexec.c
|
||||
index 2d0d50e..9f109aa 100644
|
||||
--- a/executer/user/mcexec.c
|
||||
+++ b/executer/user/mcexec.c
|
||||
@@ -470,7 +470,7 @@ struct program_load_desc *load_interp(struct program_load_desc *desc0, FILE *fp)
|
||||
j++;
|
||||
}
|
||||
}
|
||||
- desc->num_sections = j;
|
||||
+ desc->num_sections = -1; // Test for num_secionts check Issue#1011
|
||||
|
||||
desc->entry = hdr.e_entry;
|
||||
desc->interp_align = align;
|
||||
17
test/error_handling/x86_64/Issue1011/README
Normal file
17
test/error_handling/x86_64/Issue1011/README
Normal file
@@ -0,0 +1,17 @@
|
||||
■ Issue#1011 動作確認
|
||||
1. ファイルの説明
|
||||
1011.patch mcexec からmcctrl.ko に渡すprogram_load_des構造体のnum_sections に
|
||||
常に-1 を設定するパッチ
|
||||
|
||||
2. 確認方法
|
||||
1. 上記パッチを適用していない状態でMcKernelを起動する
|
||||
2. mcexec hostname を実行し、ホスト名が表示されることを確認する
|
||||
3. 上記パッチをMcKernelに適用後、ビルドと起動を行う
|
||||
4. mcexec hostname を実行し、ホスト名が表示されず、"prepare: Invalid argument"が
|
||||
コンソールに出力されることを確認する
|
||||
5. /var/log/messages に"kernel: mcexec_prepare_image: ERROR: # of sections: -1"が
|
||||
出力されていることを確認する
|
||||
|
||||
3. 確認結果
|
||||
上記確認方法で期待される動作が確認できたため、問題ない。
|
||||
|
||||
15
test/error_handling/x86_64/Issue727/727.patch
Normal file
15
test/error_handling/x86_64/Issue727/727.patch
Normal file
@@ -0,0 +1,15 @@
|
||||
diff --git a/executer/user/mcexec.c b/executer/user/mcexec.c
|
||||
index 2d0d50e..70856e7 100644
|
||||
--- a/executer/user/mcexec.c
|
||||
+++ b/executer/user/mcexec.c
|
||||
@@ -3732,7 +3732,9 @@ return_execve1:
|
||||
|
||||
/* Copy program image phase */
|
||||
case 2:
|
||||
-
|
||||
+ fprintf(stderr, "execve killed\n");
|
||||
+ fflush(stderr);
|
||||
+ kill(getpid(), SIGKILL);
|
||||
ret = -1;
|
||||
/* Alloc descriptor */
|
||||
desc = malloc(w.sr.args[2]);
|
||||
28
test/error_handling/x86_64/Issue727/README
Normal file
28
test/error_handling/x86_64/Issue727/README
Normal file
@@ -0,0 +1,28 @@
|
||||
■ Issue#727 動作確認
|
||||
|
||||
1. ファイルの説明
|
||||
727.patch 再現確認用パッチ mcexec において、execve phase 2 を SIGKILL
|
||||
終了させる
|
||||
exec.c 確認用テストプログラム exec ls する
|
||||
patch-off.log パッチ非適用時の動作確認結果 ls の結果が表示されれば OK
|
||||
patch-on.log パッチ適用時の動作確認結果 強制終了し、McKernel が PANIC して
|
||||
いなければ OK
|
||||
|
||||
2. テスト手順・結果確認方法
|
||||
gcc -o exec exec.c
|
||||
|
||||
script patch-off.log
|
||||
mcexec ./exec
|
||||
# mcexecが強制終了していればOK
|
||||
ihkosctl 0 kmsg
|
||||
# ログに PANIC の表示が無ければOK
|
||||
exit
|
||||
|
||||
patch -p1 < 727.patch
|
||||
<compile mckernel>
|
||||
script patch-on.log
|
||||
mcexec ./exec
|
||||
# lsの結果が表示されていればOK
|
||||
ihkosctl 0 kmsg
|
||||
# ログに PANIC の表示が無ければOK
|
||||
exit
|
||||
10
test/error_handling/x86_64/Issue727/exec.c
Normal file
10
test/error_handling/x86_64/Issue727/exec.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
execlp("ls", "ls", NULL);
|
||||
}
|
||||
33
test/error_handling/x86_64/Issue727/patch-off.log
Normal file
33
test/error_handling/x86_64/Issue727/patch-off.log
Normal file
@@ -0,0 +1,33 @@
|
||||
スクリプトは Wed Nov 29 11:22:32 2017
|
||||
に開始しました[?1034hbash-4.2$ ../../../../mic/mcexec ./exec
|
||||
727.patch exec exec.c patch-off.log
|
||||
bash-4.2$ ../../../../mic/ihkosctl 0kmsg kmsg
|
||||
IHK/McKernel started.
|
||||
[ -1]: no_execute_available: 1
|
||||
[ -1]: X86_IA32_NUM_PERF_COUNTERS: 4, X86_IA32_NUM_FIXED_PERF_COUNTERS: 3
|
||||
[ -1]: Invariant TSC supported.
|
||||
[ -1]: setup_x86 done.
|
||||
[ -1]: ns_per_tsc: 384
|
||||
[ -1]: KCommand Line: hidos dump_level=24
|
||||
[ -1]: Physical memory: 0x1002c7000 - 0x140000000, 1070829568 bytes, 261433 pages available @ NUMA: 0
|
||||
[ -1]: Physical memory: 0x880000000 - 0x8c0000000, 1073741824 bytes, 262144 pages available @ NUMA: 1
|
||||
[ -1]: NUMA: 0, Linux NUMA: 0, type: 1, available bytes: 1070829568, pages: 261433
|
||||
[ -1]: NUMA: 1, Linux NUMA: 1, type: 1, available bytes: 1073741824, pages: 262144
|
||||
[ -1]: NUMA 0 distances: 0 (10), 1 (21),
|
||||
[ -1]: NUMA 1 distances: 1 (10), 0 (21),
|
||||
[ -1]: map_fixed: phys: 0x90000 => 0xffffffff70015000 (2 pages)
|
||||
[ -1]: Trampoline area: 0x90000
|
||||
[ -1]: map_fixed: phys: 0x0 => 0xffffffff70017000 (1 pages)
|
||||
[ -1]: # of cpus : 7
|
||||
[ -1]: locals = ffff8001002eb000
|
||||
[ 0]: BSP: 0 (HW ID: 2 @ NUMA 0)
|
||||
[ 0]: BSP: booted 6 AP CPUs
|
||||
[ 0]: Master channel init acked.
|
||||
[ 0]: vdso is enabled
|
||||
IHK/McKernel booted.
|
||||
|
||||
bash-4.2$ シェルから脱出するには "exit" を使用してください。
|
||||
bash-4.2$ exit
|
||||
|
||||
スクリプトは Wed Nov 29 11:22:57 2017
|
||||
に終了しました
|
||||
35
test/error_handling/x86_64/Issue727/patch-on.log
Normal file
35
test/error_handling/x86_64/Issue727/patch-on.log
Normal file
@@ -0,0 +1,35 @@
|
||||
スクリプトは Wed Nov 29 11:25:01 2017
|
||||
に開始しました[?1034hbash-4.2$ ../../../../mic/mcexec ./exec
|
||||
execve killed
|
||||
強制終了
|
||||
bash-4.2$ ../../../../mic/ihkosctl 0 kmsg
|
||||
IHK/McKernel started.
|
||||
[ -1]: no_execute_available: 1
|
||||
[ -1]: X86_IA32_NUM_PERF_COUNTERS: 4, X86_IA32_NUM_FIXED_PERF_COUNTERS: 3
|
||||
[ -1]: Invariant TSC supported.
|
||||
[ -1]: setup_x86 done.
|
||||
[ -1]: ns_per_tsc: 384
|
||||
[ -1]: KCommand Line: hidos dump_level=24
|
||||
[ -1]: Physical memory: 0x1002c7000 - 0x140000000, 1070829568 bytes, 261433 pages available @ NUMA: 0
|
||||
[ -1]: Physical memory: 0x880000000 - 0x8c0000000, 1073741824 bytes, 262144 pages available @ NUMA: 1
|
||||
[ -1]: NUMA: 0, Linux NUMA: 0, type: 1, available bytes: 1070829568, pages: 261433
|
||||
[ -1]: NUMA: 1, Linux NUMA: 1, type: 1, available bytes: 1073741824, pages: 262144
|
||||
[ -1]: NUMA 0 distances: 0 (10), 1 (21),
|
||||
[ -1]: NUMA 1 distances: 1 (10), 0 (21),
|
||||
[ -1]: map_fixed: phys: 0x90000 => 0xffffffff70015000 (2 pages)
|
||||
[ -1]: Trampoline area: 0x90000
|
||||
[ -1]: map_fixed: phys: 0x0 => 0xffffffff70017000 (1 pages)
|
||||
[ -1]: # of cpus : 7
|
||||
[ -1]: locals = ffff8001002eb000
|
||||
[ 0]: BSP: 0 (HW ID: 2 @ NUMA 0)
|
||||
[ 0]: BSP: booted 6 AP CPUs
|
||||
[ 0]: Master channel init acked.
|
||||
[ 0]: vdso is enabled
|
||||
IHK/McKernel booted.
|
||||
[ 0]: do_syscall: proxy PID 14276 is dead, terminate()
|
||||
|
||||
bash-4.2$ シェルから脱出するには "exit" を使用してください。
|
||||
bash-4.2$ exit
|
||||
|
||||
スクリプトは Wed Nov 29 11:25:33 2017
|
||||
に終了しました
|
||||
12
test/error_handling/x86_64/Issue873/README
Normal file
12
test/error_handling/x86_64/Issue873/README
Normal file
@@ -0,0 +1,12 @@
|
||||
■ Issue#873 動作確認
|
||||
1. ファイルの説明
|
||||
mck_boot_test.sh McKernelの停止→起動 を100回繰り返すスクリプト
|
||||
すべてで成功した場合には[OK]メッセージを、途中で失敗した場合には[NG] メッセージを出力する
|
||||
|
||||
2. 確認方法
|
||||
1. mck_boot_test.sh のMCK_DIR にMcKernelのインストールディレクトリを指定する
|
||||
2. sh ./mck_boot_test.sh を実行する
|
||||
3. [OK]メッセージがコンソールに出力されることを確認する
|
||||
|
||||
3. 確認結果
|
||||
上記の確認方法で期待される動作が確認できたため、問題ない。
|
||||
18
test/error_handling/x86_64/Issue873/mck_boot_test.sh
Executable file
18
test/error_handling/x86_64/Issue873/mck_boot_test.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
MCK_DIR=/home/satoken/ppos
|
||||
REP_NUM=100
|
||||
|
||||
for i in `seq 1 ${REP_NUM}`
|
||||
do
|
||||
sudo ${MCK_DIR}/sbin/mcstop+release.sh
|
||||
sleep 1
|
||||
sudo ${MCK_DIR}/sbin/mcreboot.sh
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "[NG] failed to boot Mckernel :${i}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "[OK] succeed to boot McKernel ${i} times"
|
||||
Reference in New Issue
Block a user