286 lines
7.7 KiB
Bash
Executable File
286 lines
7.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
USELTP=0
|
|
USEOSTEST=0
|
|
|
|
. ../../common.sh
|
|
|
|
TP_SUB=./segv_in_sub
|
|
TP_MAIN=./segv_in_main
|
|
|
|
NUM_THREADS=6
|
|
arch=`uname -p`
|
|
|
|
# clean corefils
|
|
rm ./mccore* ./core.*
|
|
|
|
ulimit_c_bk=`ulimit -Sc`
|
|
# set ulimit -c unlimited to dump core
|
|
ulimit -c unlimited
|
|
|
|
${MCEXEC} ./segv_in_sub
|
|
|
|
# Find mccore*
|
|
CORE=`ls -1 | grep "^mccore"`
|
|
|
|
if [ ! -z $CORE ]; then
|
|
echo "[ OK ] core for McKernel process found"
|
|
else
|
|
echo "[ NG ] core for McKernel process not found"
|
|
exit 1
|
|
fi
|
|
|
|
issue=1219
|
|
tid=01
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check number of threads"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "LWP" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -eq ${NUM_THREADS} ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=02
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check backtrace"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "^#[0-9]*\s* 0x[0-9]*" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=03
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check info register"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
if [ "${arch}" == "x86_64" ]; then
|
|
num=`grep "^rip\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
elif [ "${arch}" == "aarch64" ]; then
|
|
num=`grep "^pc\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
else
|
|
num=0
|
|
fi
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=04
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "Switching to thread ${NUM_THREADS}" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=05
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check backtrace after switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "^#[0-9]*\s* 0x[0-9]*" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=06
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check info register after switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
if [ "${arch}" == "x86_64" ]; then
|
|
num=`grep "^rip\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
elif [ "${arch}" == "aarch64" ]; then
|
|
num=`grep "^pc\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
else
|
|
num=0
|
|
fi
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
# clean corefils
|
|
rm ./mccore* ./core.*
|
|
|
|
${MCEXEC} ./segv_in_main
|
|
|
|
# Find mccore*
|
|
CORE=`ls -1 | grep "^mccore"`
|
|
|
|
if [ ! -z $CORE ]; then
|
|
echo "[ OK ] core for McKernel process found"
|
|
else
|
|
echo "[ NG ] core for McKernel process not found"
|
|
exit 1
|
|
fi
|
|
|
|
tid=07
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check number of threads"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "LWP" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -eq ${NUM_THREADS} ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=08
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check backtrace"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "^#[0-9]*\s* 0x[0-9]*" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=09
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check info register"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
if [ "${arch}" == "x86_64" ]; then
|
|
num=`grep "^rip\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
elif [ "${arch}" == "aarch64" ]; then
|
|
num=`grep "^pc\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
else
|
|
num=0
|
|
fi
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=10
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "Switching to thread ${NUM_THREADS}" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=11
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check backtrace after switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "^#[0-9]*\s* 0x[0-9]*" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
tid=12
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check info register after switching thread"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
if [ "${arch}" == "x86_64" ]; then
|
|
num=`grep "^rip\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
elif [ "${arch}" == "aarch64" ]; then
|
|
num=`grep "^pc\s*0x.*" ./C${issue}T${tid}.txt | wc -l`
|
|
else
|
|
num=0
|
|
fi
|
|
|
|
if [ ${num} -gt 0 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|
|
# clean corefils
|
|
rm ./mccore* ./core.*
|
|
|
|
${MCEXEC} ./segv_after_join
|
|
|
|
# restore ulimit -c
|
|
ulimit -c ${ulimit_c_bk}
|
|
|
|
# Find mccore*
|
|
CORE=`ls -1 | grep "^mccore"`
|
|
|
|
if [ ! -z $CORE ]; then
|
|
echo "[ OK ] core for McKernel process found"
|
|
else
|
|
echo "[ NG ] core for McKernel process not found"
|
|
exit 1
|
|
fi
|
|
|
|
tid=13
|
|
echo "*** C${issue}T${tid} start *******************************"
|
|
echo "** Check number of threads"
|
|
gdb ${TP_SUB} --core=./${CORE} -x ./cmd/C${issue}T${tid}.cmd 2>/dev/null \
|
|
| sed -n '/TESTOUT_START/,$p' | tee ./C${issue}T${tid}.txt
|
|
|
|
num=`grep "LWP" ./C${issue}T${tid}.txt | wc -l`
|
|
|
|
if [ ${num} -eq 1 ]; then
|
|
echo "*** C${issue}T${tid} PASSED ******************************"
|
|
else
|
|
echo "*** C${issue}T${tid} FAILED ******************************"
|
|
fi
|
|
echo ""
|
|
|