DF-4056 / run_rx_livelock.log
# DF-4056 RX half โ observed evidence (stock kernel #0), captured from the
# live livelock session (2026-10-14 20:50-20:57 UTC) and the serial console.
## Launch
# sh /root/dfet/run.sh 3 & (sysctl -w kern.dfet.go=3; NEVER RETURNS)
## dmesg marker (boot.log / dfbsd-qemu):
dfet: S3: rxs_stat_ring index=2000 wrap=0 (ET_RXS_STATRING_INDEX=12-bit vs
ET_RX_NSTAT=1024: 2000 is UNREACHABLE by rsr_index); dispatching REAL
et_intr under the serializer - IF THIS SYSCTL NEVER RETURNS AND ierrors
GROWS WITHOUT BOUND (kern.dfet.stats), DF-4056-RX LIVELOCK IS PROVEN
(if_et.c:1851)
## ierrors growth (kern.dfet.stats sampled twice per session)
session 1 (t+~10s of spinning):
kern.dfet.stats: ipackets=0 ierrors=4230460413 opackets=0 oerrors=0 df_delivered=0 df_oob=0
kern.dfet.stats: ipackets=0 ierrors=4253528605 opackets=0 oerrors=0 df_delivered=0 df_oob=0
(~2 s apart => ~11.5 MILLION completion-walk iterations/second)
session 2 (t+~9 min of spinning):
kern.dfet.stats: ipackets=0 ierrors=6596005779 ...
kern.dfet.stats: ipackets=0 ierrors=6631203348 ...
(3 s apart => ~11.7M/s โ unbounded, permanent)
## Serializer capture (kern.dfet.grab=1 dispatched while spinner runs)
kern.dfet.grab: 0 <- write echoed, then the call NEVER returned
(no "dfet: grab: ACQUIRED" line: dmesg grep count = 0)
=> the lwkt_serialize_enter(&df_ser) inside the grab probe blocked forever:
the production et_intr walk holds the interface serializer permanently.
## System effects
- load averages: 3.43, 1.57, 0.66 and climbing (one CPU 100% in the walk)
- `ps -ax` HANGS while the spinner runs (kernel proc-list walk wedges) โ
session killed by timeout twice (rc=124)
- the sysctl caller is unkillable (stuck in-kernel RUN state)
- the guest could NOT be shut down cleanly afterwards: vm.sh down timed
out; host had to kill -9 QEMU, revert the snapshot and reboot
(same shutdown wedge as DF-3715/4025/4046/4051 family runs)
- guest otherwise alive (other CPUs), which allowed sampling the evidence