⬢ DragonFlyBSD Kernel Audit
DF-5408 / run_suite.sh
← back to finding ↓ download raw
#!/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