wait: Delay wake-up parent within switch context

Fujitsu: POSTK_DEBUG_TEMP_FIX_41
Refs: #1006
Change-Id: Ia98e896505ad0f6549766604ade84550eee8bd2d
This commit is contained in:
Ken Sato
2018-08-29 14:30:32 +09:00
committed by Masamichi Takagi
parent 0fdeb254b3
commit f57b0c5d4f
10 changed files with 280 additions and 43 deletions

106
test/issues/1006/C1006.sh Normal file
View File

@ -0,0 +1,106 @@
#!/bin/sh
if [ -f $HOME/mck_test_config ]; then
. $HOME/mck_test_config
else
BIN=
SBIN=
OSTEST=
LTP=
fi
BOOTPARAM="-c 1-7,9-15,17-23,25-31 -m 10G@0,10G@1 -r 1-7:0+9-15:8+17-23:16+25-31:24"
if [ "x$BINDIR" = x ];then
BINDIR="$BIN"
fi
if [ "x$SBINDIR" = x ];then
SBINDIR="$SBIN"
fi
if [ "x$OSTESTDIR" = x ]; then
OSTESTDIR="$OSTEST"
fi
if [ "x$LTPDIR" = x ]; then
LTPDIR="$LTP"
fi
if [ ! -x $SBINDIR/mcstop+release.sh ]; then
echo mcstop+release: not found >&2
exit 1
fi
echo -n "mcstop+release.sh ... "
sudo $SBINDIR/mcstop+release.sh
echo "done"
if [ ! -x $SBINDIR/mcreboot.sh ]; then
echo mcreboot: not found >&2
exit 1
fi
echo -n "mcreboot.sh $BOOTPARAM ... "
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
echo "done"
if [ ! -x $BINDIR/mcexec ]; then
echo mcexec: not found >&2
exit 1
fi
tid=001
echo "*** RT_$tid start *******************************"
sudo $BINDIR/mcexec $OSTESTDIR/bin/test_mck -s ptrace -n 8 2>&1 | tee ./RT_${tid}.txt
if grep "RESULT: ok" ./RT_${tid}.txt > /dev/null 2>&1 ; then
echo "*** RT_$tid: PASSED"
else
echo "*** RT_$tid: FAILED"
fi
echo ""
tid=001
echo "*** LT_$tid start *******************************"
sudo PATH=$LTPDIR/bin:${PATH} $BINDIR/mcexec $LTPDIR/bin/ptrace01 2>&1 | tee ./LT_${tid}.txt
ok=`grep TPASS LT_${tid}.txt | wc -l`
ng=`grep TFAIL LT_${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** LT_$tid: PASSED (ok:$ok)"
else
echo "*** LT_$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=002
echo "*** LT_$tid start *******************************"
sudo PATH=$LTPDIR/bin:${PATH} $BINDIR/mcexec $LTPDIR/bin/ptrace02 2>&1 | tee ./LT_${tid}.txt
ok=`grep TPASS LT_${tid}.txt | wc -l`
ng=`grep TFAIL LT_${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** LT_$tid: PASSED (ok:$ok)"
else
echo "*** LT_$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=003
echo "*** LT_$tid start *******************************"
sudo PATH=$LTPDIR/bin:${PATH} $BINDIR/mcexec $LTPDIR/bin/ptrace03 2>&1 | tee ./LT_${tid}.txt
ok=`grep TPASS LT_${tid}.txt | wc -l`
ng=`grep TFAIL LT_${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** LT_$tid: PASSED (ok:$ok)"
else
echo "*** LT_$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=004
echo "*** LT_$tid start *******************************"
sudo PATH=$LTPDIR/bin:${PATH} $BINDIR/mcexec $LTPDIR/bin/ptrace05 2>&1 | tee ./LT_${tid}.txt
ok=`grep TPASS LT_${tid}.txt | wc -l`
ng=`grep TFAIL LT_${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** LT_$tid: PASSED (ok:$ok)"
else
echo "*** LT_$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""

14
test/issues/1006/Makefile Normal file
View File

@ -0,0 +1,14 @@
CC = gcc
TARGET=
CPPFLAGS =
LDFLAGS =
all: $(TARGET)
test: all
@sh ./C1006.sh
clean:
rm -f $(TARGET) *.o

37
test/issues/1006/README Normal file
View File

@ -0,0 +1,37 @@
【Issue#1006 動作確認】
□ テスト内容
1. Issueで報告された再現プログラムでの確認
RT_001: ostest-ptrace.008 での確認
wait()で待っている親プロセスを起動した直後の子プロセスから、
ptrace(GETFPREGS)で正しい値が取得できることを確認
2. 既存のptrace機能に影響がないことをLTPを用いて確認
LT_001: ltp-ptrace01
PTRACE_TRACEME と PTRACE_KILL の動作を確認 (TPASS 2件)
LT_002: ltp-ptrace02
PTRACE_TRACEME と PTRACE_CONT の動作を確認 (TPASS 2件)
LT_003: ltp-ptrace03
ptrace()に不正なpidを指定した場合の動作を確認 (TCONF 1件、TPASS 2件)
LT_004: ltp-ptrace05
TRACE状態での各シグナル受信時の動作を確認 (TPASS 65件)
□ 実行手順
McKernelのインストール先や、OSTEST, LTPの配置場所は、
$HOME/mck_test_config を参照している
mck_test_config は、McKernelをビルドした際に生成される
mck_test_config.sample ファイルを$HOMEにコピーし、適宜編集する
$ make test
実行できない場合は、C976.shの以下の行を適切に書き換えた後に実行。
BIN= mcexec が存在するパス
SBIN= mcreboot.sh が存在するパス
OSTEST= OSTESTが存在するパス
LTP= LTPが存在するパス
□ 実行結果
result.log 参照。
すべての項目をPASSしていることを確認。

View File

@ -0,0 +1,95 @@
*** RT_001 start *******************************
TEST_SUITE: ptrace
TEST_NUMBER: 8
ARGS:
TEST_SUITE: ptrace
TEST_NUMBER: 8
ARGS:
child's fpregs.swd is 0x38 (expected NOT ZERO)
RESULT: ok
*** RT_001: PASSED
*** LT_001 start *******************************
ptrace01 1 TPASS : Test Passed
ptrace01 2 TPASS : Test Passed
*** LT_001: PASSED (ok:2)
*** LT_002 start *******************************
ptrace02 1 TPASS : Test Passed
ptrace02 2 TPASS : Test Passed
*** LT_002: PASSED (ok:2)
*** LT_003 start *******************************
ptrace03 1 TCONF : ptrace03.c:137: this kernel allows to trace init
ptrace03 2 TPASS : Test Passed
ptrace03 3 TPASS : Test Passed
*** LT_003: PASSED (ok:2)
*** LT_004 start *******************************
ptrace05 0 TINFO : [child] Sending kill(.., 0)
ptrace05 1 TPASS : kill(.., 0) exited with 0, as expected.
ptrace05 2 TPASS : Stopped as expected
ptrace05 3 TPASS : Stopped as expected
ptrace05 4 TPASS : Stopped as expected
ptrace05 5 TPASS : Stopped as expected
ptrace05 6 TPASS : Stopped as expected
ptrace05 7 TPASS : Stopped as expected
ptrace05 8 TPASS : Stopped as expected
ptrace05 9 TPASS : Stopped as expected
ptrace05 10 TPASS : Killed with SIGKILL, as expected.
ptrace05 11 TPASS : Stopped as expected
ptrace05 12 TPASS : Stopped as expected
ptrace05 13 TPASS : Stopped as expected
ptrace05 14 TPASS : Stopped as expected
ptrace05 15 TPASS : Stopped as expected
ptrace05 16 TPASS : Stopped as expected
ptrace05 17 TPASS : Stopped as expected
ptrace05 18 TPASS : Stopped as expected
ptrace05 19 TPASS : Stopped as expected
ptrace05 20 TPASS : Stopped as expected
ptrace05 21 TPASS : Stopped as expected
ptrace05 22 TPASS : Stopped as expected
ptrace05 23 TPASS : Stopped as expected
ptrace05 24 TPASS : Stopped as expected
ptrace05 25 TPASS : Stopped as expected
ptrace05 26 TPASS : Stopped as expected
ptrace05 27 TPASS : Stopped as expected
ptrace05 28 TPASS : Stopped as expected
ptrace05 29 TPASS : Stopped as expected
ptrace05 30 TPASS : Stopped as expected
ptrace05 31 TPASS : Stopped as expected
ptrace05 32 TPASS : Stopped as expected
ptrace05 33 TPASS : Stopped as expected
ptrace05 34 TPASS : Stopped as expected
ptrace05 35 TPASS : Stopped as expected
ptrace05 36 TPASS : Stopped as expected
ptrace05 37 TPASS : Stopped as expected
ptrace05 38 TPASS : Stopped as expected
ptrace05 39 TPASS : Stopped as expected
ptrace05 40 TPASS : Stopped as expected
ptrace05 41 TPASS : Stopped as expected
ptrace05 42 TPASS : Stopped as expected
ptrace05 43 TPASS : Stopped as expected
ptrace05 44 TPASS : Stopped as expected
ptrace05 45 TPASS : Stopped as expected
ptrace05 46 TPASS : Stopped as expected
ptrace05 47 TPASS : Stopped as expected
ptrace05 48 TPASS : Stopped as expected
ptrace05 49 TPASS : Stopped as expected
ptrace05 50 TPASS : Stopped as expected
ptrace05 51 TPASS : Stopped as expected
ptrace05 52 TPASS : Stopped as expected
ptrace05 53 TPASS : Stopped as expected
ptrace05 54 TPASS : Stopped as expected
ptrace05 55 TPASS : Stopped as expected
ptrace05 56 TPASS : Stopped as expected
ptrace05 57 TPASS : Stopped as expected
ptrace05 58 TPASS : Stopped as expected
ptrace05 59 TPASS : Stopped as expected
ptrace05 60 TPASS : Stopped as expected
ptrace05 61 TPASS : Stopped as expected
ptrace05 62 TPASS : Stopped as expected
ptrace05 63 TPASS : Stopped as expected
ptrace05 64 TPASS : Stopped as expected
ptrace05 65 TPASS : Stopped as expected
*** LT_004: PASSED (ok:65)