DF-4051 / run.log
# DF-4051 consolidated guest-run evidence (all lines below are verbatim
# captured output; the observing ssh sessions' streams were cut when the
# guest wedged - the console/ps lines were recovered from the serial console
# and from post-wedge probe sessions, as in the DF-4046 verification).
================ Run 1 (replica v1, tsleep-based park-wait) ================
--- device presence ---
no NVIDIA PCI devices (nfe hardware-gated) [pciconf -l | grep -i nvidia]
vtnet0 lo0
--- module ---
KLD_OK
kern.nfereplica.arm: 0 -> 0
nfereplica: loaded (hz=100)
nfereplica: armed (nfe_tick shape, 1-tick period; nfe uses hz)
[stop issued; 6s later, post-wedge probes:]
--- dmesg tail (no 'parked' line: stopper stuck in its own wait) ---
nfereplica: loaded (hz=100)
nfereplica: armed (nfe_tick shape, 1-tick period; nfe uses hz)
--- ps stopper + softclock (2nd sample) ---
-1 B4 slize (softclock 4)
1082 D4 nfetkwt sysctl kern.nfereplica.stop=1
-> PERMANENT WEDGE, but the stopper parked in the replica's own parking aid
(its tsleep timeout is delivered by the same softclock the tick parks:
CPU-wide callout starvation) rather than at callout_stop(). Guest reset
with-src; replica v2 (DELAY-based park-wait) isolates the true block
point.
================ Run 2 (replica v2 - DECISIVE) =============================
--- device presence ---
no NVIDIA PCI devices (nfe hardware-gated)
vtnet0 lo0
--- module ---
KLD_OK
kern.nfereplica.arm: 0 -> 0
[observing session's stream froze mid-script when the wedge hit; the script
continued server-side and the stop sysctl ran]
--- serial console (serial_console.txt) ---
nfereplica: loaded (hz=100)
nfereplica: armed (nfe_tick shape, 1-tick period; nfe uses hz)
nfereplica: nfe_tick parked on our serializer (fired=201 ran=200) - entering callout_stop()
nfereplica: IF THIS IS THE LAST nfereplica LINE, AB-BA DEADLOCK IS PROVEN
<<< nothing after this line; callout_stop() never returned >>>
--- post-wedge probe (separate ssh session) ---
-1 B0 - (softclock 0)
-1 B1 - (softclock 1)
-1 B2 - (softclock 2)
-1 B3 slize (softclock 3) <- nfe_tick replica parked in
-1 B4 - (softclock 4) lwkt_serialize_enter ("slize")
-1 B5 - (softclock 5)
974 D2 costp sysctl kern.nfereplica.stop=1
^ stopper in callout_stop()'s synchronous
wait, ssleep "costp" (kern_timeout.c:920)
--- 2nd sample minutes later (permanence) ---
974 D2 costp sysctl kern.nfereplica.stop=1
--- callout starvation probe ---
(userspace sleep 3 on a healthy CPU: SLEPT_OK - starvation is per-CPU;
threads homed on the wedged softclock's CPU never get timers)
<<< guest could not shut down cleanly; vm.sh reset with-src recovered it >>>