DF-5408 / run_suite.sh
#!/bin/sh # DF-5408 full run: vkernel suite — modes 0,1,2(loop),5,6 + fprace stress TAG=${1:-baseline} VK=/usr/obj/usr/src/sys/VKERNEL64/kernel.debug pkill -9 -f kernel.debug 2>/dev/null; sleep 1 rm -f /tmp/vkin /tmp/vkconsole.log mkfifo /tmp/vkin (sleep 1200 > /tmp/vkin) & HOLDER=$! ( exec 3> /tmp/vkin echo "ufs:vkd0" >&3 for i in $(seq 1 120); do grep -q "Mounting root from ufs:vkd0$" /tmp/vkconsole.log 2>/dev/null && break sleep 1 done sleep 20 echo "sysctl vm.vkernel_enable=1" >&3 sleep 2 echo "echo '=== MODE 0 (control) ==='; /root/vmflag 0; echo RC=\$?" >&3 sleep 3 echo "echo '=== MODE 1 (DF-5408 sigreturn raw rflags) ==='; /root/vmflag 1; echo RC=\$?" >&3 sleep 3 echo "echo '=== MODE 2 (DF-5409 vmspace_ctl VM frame, 20k loop) ==='; /root/vmflag 2 20000; echo RC=\$?" >&3 sleep 8 echo "echo '=== MODE 6 (storm control) ==='; /root/vmflag 6; echo RC=\$?" >&3 sleep 25 echo "echo '=== MODE 5 (poisoned sigreturn storm) ==='; /root/vmflag 5; echo RC=\$?" >&3 sleep 30 echo "echo '=== FPRACE (DF-5410) ==='; /root/fprace 4 120; echo RC=\$?" >&3 sleep 150 echo "echo RUN-COMPLETE" >&3 ) & PUMP=$! cd /usr/obj/usr/src/sys/VKERNEL64 ./kernel.debug -m 512m -r /vkroot.img -n 2 \ -e init_path=/bin/vkinit \ -s < /tmp/vkin > /tmp/vkconsole.log 2>&1 & VKPID=$! echo "vkernel pid=$VKPID tag=$TAG" i=0 while [ $i -lt 480 ]; do grep -q "RUN-COMPLETE\|Fatal trap\|panic:\|npxdna" /tmp/vkconsole.log 2>/dev/null && break kill -0 $VKPID 2>/dev/null || break sleep 2 i=$((i+2)) done sleep 8 echo "=== vkernel alive? ===" if kill -0 $VKPID 2>/dev/null; then echo "ALIVE"; else echo "DEAD"; fi echo "=== console from root-mount ===" N=$(grep -n "Mounting root from ufs:vkd0$" /tmp/vkconsole.log | head -1 | cut -d: -f1) if [ -z "$N" ]; then N=1; fi awk -v n="$N" 'NR>=n' /tmp/vkconsole.log | grep -v "^Mounting root from\|^no disk named\|^setrootbyname\|^ffs_mountroot\|^Root mount failed\|Manual root\|fstype:<>device\|mountroot>" | head -140 kill $PUMP $HOLDER 2>/dev/null pkill -9 -f kernel.debug 2>/dev/null exit 0 |