⬢ DragonFlyBSD Kernel Audit
DF-4275 / run.log
← back to finding ↓ download raw
df4275: replica armed
df4275: tick() dequeued; entering serializer (blocks: stopper holds it)
df4275: stopper HOLDS serializer; tick() INPROG+blocked; calling callout_stop() [epic_stop analog] ...
df4275: expecting permanent 'costp' sleep -- if this returns, no deadlock
df4275: stopper_td=0xfffff8008ed96600 wchan=0xfffff8008f968700 wmesg="costp" (tick_inprog=1)
df4275: stopper_td=0xfffff8008ed96600 wchan=0xfffff8008f968700 wmesg="costp" (tick_inprog=1)
df4275: stopper_td=0xfffff8008ed96600 wchan=0xfffff8008f968700 wmesg="costp" (tick_inprog=1)
df4275: stopper_td=0xfffff8008ed96600 wchan=0xfffff8008f968700 wmesg="costp" (tick_inprog=1)
df4275: stopper_td=0xfffff8008ed96600 wchan=0xfffff8008f968700 wmesg="costp" (tick_inprog=1)
df4275: RESULT: DEADLOCK REPRODUCED -- stopper permanently asleep in "costp" while tick() is blocked on the serializer the stopper holds

--- ps -axo pid,tdo,stat,wchan,comm | grep -E "df4275|softclock" ---
    -1 B1     -        softclock 1
    -1 B2     -        softclock 2
    -1 B3     -        softclock 3
    -1 B4     -        softclock 4
    -1 B5     costp    df4275stop
    -1 B5     slize    softclock 5
    -1 B0     -        softclock 0

# both sides of the AB-BA visible: df4275stop parked in 'costp' (inside
# callout_stop's synchronous wait, kern_timeout.c:920) while softclock 5 is
# blocked in 'slize' (lwkt_serialize_sleep, kern/lwkt_serialize.c:110) INSIDE
# the tick callback, which needs the serializer df4275stop holds.

--- kldstat | grep df4275 ---
 4    1 0xffffffff82600000     1000 df4275rep.ko