⬢ DragonFlyBSD Kernel Audit
DF-4051 / run.log
← back to finding ↓ download raw
# 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 >>>