init_process_stack: Support "ulimit -s unlimited"

Refs: #1109
Change-Id: I395f012fd747cb6a2f93be71e34c7f6f3666ed67
This commit is contained in:
Tomoki Shirasawa
2018-06-18 15:55:59 +09:00
committed by Masamichi Takagi
parent 0c7384f980
commit eae5c40f60
11 changed files with 202 additions and 8 deletions

76
test/issues/1109/C1109.sh Normal file
View File

@ -0,0 +1,76 @@
#!/bin/sh
BIN=
SBIN=
OSTEST=
BOOTPARAM="-c 1-7 -m 10G@0"
if [ -f ../../../config.h ]; then
str=`grep "^#define BINDIR " ../../../config.h | head -1 | sed 's/^#define BINDIR /BINDIR=/'`
eval $str
fi
if [ "x$BINDIR" = x ];then
BINDIR="$BIN"
fi
if [ -f ../../../Makefile ]; then
str=`grep ^SBINDIR ../../../Makefile | head -1 | sed 's/ //g'`
eval $str
fi
if [ "x$SBINDIR" = x ];then
SBINDIR="$SBIN"
fi
if [ -f $HOME/ostest/bin/test_mck ]; then
OSTESTDIR="$HOME/ostest"
fi
if [ "x$OSTESTDIR" = x ]; then
OSTESTDIR="$OSTEST"
fi
if ! lsmod | grep mcctrl > /dev/null 2>&1; then
if [ ! -x $SBINDIR/mcreboot.sh ]; then
echo no mcreboot found >&2
exit 1
fi
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
fi
if [ ! -x $SBINDIR/ihkosctl ]; then
echo no ihkosctl found >&2
exit 1
fi
maxmem=`$SBINDIR/ihkosctl 0 query mem | cut -d '@' -f 1`
mem95p=`expr $maxmem \* 95 / 100`
mem110p=`expr $maxmem \* 110 / 100`
if [ ! -x $BINDIR/mcexec ]; then
echo no mcexec found >&2
exit 1
fi
for i in 10240:9961472:01 2097152:2040109466:02 unlimited:$mem95p:03; do
ul=`echo $i|sed 's/:.*//'`
st=`echo $i|sed -e 's/^[^:]*://' -e 's/:[^:]*$//'`
id=`echo $i|sed 's/.*://'`
sudo sh -c "ulimit -s $ul; $BINDIR/mcexec $OSTESTDIR/bin/test_mck -s mem_stack_limits -n 0 -- -s $st" 2>&1 | tee C1109T$id.txt
if grep "RESULT: ok" C1109T$id.txt > /dev/null 2>&1; then
echo "*** C1109T$id: OK"
else
echo "*** C1109T$id: NG"
fi
done
for i in 10M:9961472:04 2G:2040109466:05 100000G:$mem95p:06; do
ul=`echo $i|sed 's/:.*//'`
st=`echo $i|sed -e 's/^[^:]*://' -e 's/:[^:]*$//'`
id=`echo $i|sed 's/.*://'`
$BINDIR/mcexec -s 2M,$ul $OSTESTDIR/bin/test_mck -s mem_stack_limits -n 0 -- -s $st 2>&1 | tee C1109T$id.txt
if grep "RESULT: ok" C1109T$id.txt > /dev/null 2>&1; then
echo "*** C1109T$id: OK"
else
echo "*** C1109T$id: NG"
fi
done

View File

@ -0,0 +1,49 @@
Script started on Thu Jun 28 09:14:18 2018
bash-4.2$ make test
sh ./C1109.sh
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 9961472
call: 0 GiB + 9 MiB + 512 KiB
used_stack size: 9986480 (0 GiB + 9 MiB + 536 KiB)
RESULT: ok
*** C1109T01: OK
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 2040109466
call: 1 GiB + 921 MiB + 614 KiB
used_stack size: 2040182784 (1 GiB + 921 MiB + 686 KiB)
RESULT: ok
*** C1109T02: OK
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 10200547328
call: 9 GiB + 512 MiB + 0 KiB
used_stack size: 10200572336 (9 GiB + 512 MiB + 24 KiB)
RESULT: ok
*** C1109T03: OK
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 9961472
call: 0 GiB + 9 MiB + 512 KiB
used_stack size: 9986480 (0 GiB + 9 MiB + 536 KiB)
RESULT: ok
*** C1109T04: OK
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 2040109466
call: 1 GiB + 921 MiB + 614 KiB
used_stack size: 2040182784 (1 GiB + 921 MiB + 686 KiB)
RESULT: ok
*** C1109T05: OK
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 10200547328
call: 9 GiB + 512 MiB + 0 KiB
used_stack size: 10200572336 (9 GiB + 512 MiB + 24 KiB)
RESULT: ok
*** C1109T06: OK
bash-4.2$ exit
exit
Script done on Thu Jun 28 09:14:32 2018

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 9961472
call: 0 GiB + 9 MiB + 512 KiB
used_stack size: 9986480 (0 GiB + 9 MiB + 536 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 2040109466
call: 1 GiB + 921 MiB + 614 KiB
used_stack size: 2040182784 (1 GiB + 921 MiB + 686 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 10200547328
call: 9 GiB + 512 MiB + 0 KiB
used_stack size: 10200572336 (9 GiB + 512 MiB + 24 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 9961472
call: 0 GiB + 9 MiB + 512 KiB
used_stack size: 9986480 (0 GiB + 9 MiB + 536 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 2040109466
call: 1 GiB + 921 MiB + 614 KiB
used_stack size: 2040182784 (1 GiB + 921 MiB + 686 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
TEST_SUITE: mem_stack_limits
TEST_NUMBER: 0
ARGS: -s 10200547328
call: 9 GiB + 512 MiB + 0 KiB
used_stack size: 10200572336 (9 GiB + 512 MiB + 24 KiB)
RESULT: ok

View File

@ -0,0 +1,6 @@
all::
test::
sh ./C1109.sh
clean::

25
test/issues/1109/README Normal file
View File

@ -0,0 +1,25 @@
【Issue#1109 動作確認】
□ テスト内容
1. スタックサイズ制限を ulimit -s によって指定した場合の実行確認
C1109T01 ulimit -s 10MB 指定し、9.5MBスタックを使用できることを確認
C1109T02 ulimit -s 2GB 指定し、1.9GBスタックを使用できることを確認
C1109T03 ulimit -s unlimited 指定し、全メモリの95%をスタックで使用できる
ことを確認
2. スタックサイズをmcexec -s オプションで指定した場合の実行確認
C1109T04 mcexec -s 2M,10M 指定し、9.5MBスタックを使用できることを確認
C1109T05 mcexec -s 2M,2G 指定し、1.9GBスタックを使用できることを確認
C1109T06 mcexec -s 2M,100000G 指定し、全メモリの95%をスタックで使用できる
ことを確認
□ 実行手順
$ make test
実行できない場合は、C1109.shの以下の行を適切に書き換えた後に実行。
BIN= mcexec が存在するパス
SBIN= mcreboot.sh が存在するパス
OSTEST= OSTEST が存在するパス
□ 実行結果
C1109.txt 参照。
全ての項目が OK となっていることを確認。