DF-2329 / run.log
DF-2329 lost-wakeup race (BUSAUDIT kernel #0 2026-10-21 11:04, guest root, verbatim production ppbconf.c compiled into ppbharness3.ko: ppbconf.c SHA256 c853ab25f1362bc58a4718b2a8309f6be3e5f394d73125af82a313f41774c0f9 ppb_1284.c SHA256 88eaa04ce517ff089956b29d3ece23b8fedad5b9aeb2ea2b74dfbe399680dae4 ppb_base.c SHA256 2a4c89abe2886da87269ddb8cab1021b670198c854f0c78d940a782f41492deb) ==================================================================== # sysctl hw.ppbx3.test=3 (race test: waiter pinned to cpu1 via lwkt_migratecpu) # sleep 30 hw.ppbx3.racetrials: 16071 hw.ppbx3.lostwake: 1 hw.ppbx3.caught: 0 console (dmesg): PPBX3: fakeppc0 attached, starting worker PPBX3: harness worker start (production ppbconf.c verbatim) ppbus0: <Parallel port bus> on ppc0 ppbus0: IEEE1284 device found /NIBBLE ppb: <PnP> 30 characters: M(0x4d) F(0x46) G(0x47) :(0x3a) X(0x58) ;(0x3b) ... CLS:PRINTER; ppbus0: <X Y/1> PRINTER <- control attach: well-formed ID parses cleanly hxc30: <ppbus child> on ppbus0. hxc31: <ppbus child> on ppbus0. PPBX3: DF-2329 lost-wakeup race: owner releases between requester crit_exit (ppbconf.c:467) and tsleep (:474); wakeup has no interlock -> lost PPBX3: DF-2329 REPRODUCED at trial 16070 (delay 70 us): waiter STILL ASLEEP with PPB owner==NULL -- wakeup was lost; PPB_WAIT|PPB_NOINTR sleep is uninterruptible (kill-proof) PPBX3: DF-2329 done: trials=16071 lostwake=1 (the rig revived the waiter with an artificial wakeup(ppb); in production nothing ever would: the bus is FREE and the sleeper is in tsleep(ppb, 0 [no PCATCH]) -- unkillable, permanent)