DF-4064 / fxp_race3.sh
#!/bin/sh # DF-4064 phase 3: phased cycle: # 1. `up` arms fxp_stat_timer (fxp_init:1886) # 2. quiet 1.2s -> timer FIRES (self-rearms); a background M-storm # (`ifconfig fxp0` dumps = netisr-held serializer sections) keeps # netisr busy so the parked fxp_tick (softclock, same cpu) cannot run # 3. one `down` stopper entry -> fxp_stop:1577 callout_stop sees the tick # INPROG-parked -> sleeps 'costp' holding the serializer; the tick sleeps # 'slize' wanting that serializer -> permanent AB-BA wedge. LOG=/root/fxp_race3.log CON=/dev/console echo "=== fxp race3 start $(date) ===" > $CON echo "=== fxp race3 start ===" > $LOG cyc=0 while [ $cyc -lt 20 ]; do cyc=$((cyc+1)) echo "-- cycle $cyc" > $CON ifconfig fxp0 up 2>/dev/null ( while :; do ifconfig fxp0 >/dev/null 2>&1; done ) & MP=$! sleep 1.2 ifconfig fxp0 down 2>/dev/null & sleep 0.6 if ps -axao wchan 2>/dev/null | grep -q costp; then echo "=== WEDGE DETECTED cycle=$cyc (costp) ===" > $CON echo "=== WEDGE DETECTED cycle=$cyc ===" >> $LOG ps -axao pid,stat,wchan,comm > $CON 2>&1 ps -axao pid,stat,wchan,comm >> $LOG 2>&1 echo "=== END WEDGE SNAPSHOT ===" > $CON exit 0 fi kill $MP 2>/dev/null pkill ifconfig 2>/dev/null sleep 0.5 done echo "=== NO WEDGE in 20 cycles ===" > $CON echo "=== NO WEDGE in 20 cycles ===" >> $LOG |