> Date: Mon, 26 Jun 2023 22:28:42 +0200 > From: Alexander Bluhm <alexander.bl...@gmx.net> > > Hi, > > I have an ifconfig on ix(4) that hangs in "sbar" wait queue during > "starting network" while booting. > > load: 3.00 cmd: ifconfig 52949 [sbar] 0.01u 0.05s 0% 78k > > ddb{0}> ps > PID TID PPID UID S FLAGS WAIT COMMAND > 52949 250855 50082 0 3 0x3 sbar ifconfig > 50082 468479 32384 0 3 0x10008b sigsusp sh > 52583 256132 23859 77 3 0x100092 kqread dhcpleased > 26314 670 23859 77 3 0x100092 kqread dhcpleased > 23859 213684 1 0 3 0x80 kqread dhcpleased > 1084 413649 97426 115 3 0x100092 kqread slaacd > 79640 480435 97426 115 3 0x100092 kqread slaacd > 97426 244636 1 0 3 0x100080 kqread slaacd > 32384 389946 1 0 3 0x10008b sigsusp sh > 25127 139046 0 0 3 0x14200 bored smr > 38562 94707 0 0 3 0x14200 pgzero zerothread > 27589 65355 0 0 3 0x14200 aiodoned aiodoned > 20876 273172 0 0 3 0x14200 syncer update > 35865 394897 0 0 3 0x14200 cleaner cleaner > 89296 37410 0 0 3 0x14200 reaper reaper > 4195 18701 0 0 3 0x14200 pgdaemon pagedaemon > 70794 65241 0 0 3 0x14200 usbtsk usbtask > 42580 105576 0 0 3 0x14200 usbatsk usbatsk > 96913 6418 0 0 3 0x40014200 acpi0 acpi0 > 43860 163896 0 0 1 0x14200 idle7 > 9928 477713 0 0 7 0x40014200 idle6 > 19947 457773 0 0 7 0x40014200 idle5 > 71017 110610 0 0 7 0x40014200 idle4 > 73733 294276 0 0 7 0x40014200 idle3 > 73085 302072 0 0 7 0x40014200 idle2 > 89634 211435 0 0 7 0x40014200 idle1 > 45877 221411 0 0 2 0x40014200 sensors > 41433 306787 0 0 3 0x14200 bored softnet3 > 85227 338038 0 0 3 0x14200 bored softnet2 > 72032 215983 0 0 3 0x14200 netlock softnet1 > 32550 351943 0 0 3 0x14200 bored softnet0 > 11993 408132 0 0 2 0x40014200 systqmp > 58738 210334 0 0 3 0x14200 netlock systq > 70352 115696 0 0 3 0x40014200 netlock softclock > *95768 350377 0 0 7 0x40014200 idle0 > 1 298699 0 0 3 0x82 wait init > 0 0 -1 0 3 0x10200 scheduler swapper > > ifconfig holds the netlock, I guess this prevents progress.
What does a WITNESS kernel report? > ddb{0}> trace /t 0t250855 > sleep_finish(ffff8000248a3928,1) at sleep_finish+0x102 > cond_wait(ffff8000248a39c0,ffffffff8207c985) at cond_wait+0x64 > sched_barrier(ffff80002253fff0) at sched_barrier+0x77 > ixgbe_stop(ffff800000776000) at ixgbe_stop+0x1f7 > ixgbe_init(ffff800000776000) at ixgbe_init+0x36 > ixgbe_ioctl(ffff800000776048,8020690c,ffff800000842500) at ixgbe_ioctl+0x13e > in_ifinit(ffff800000776048,ffff800000842500,ffff8000248a3cf0,1) at > in_ifinit+0x > f3 > in_ioctl_change_ifaddr(8040691a,ffff8000248a3ce0,ffff800000776048) at > in_ioctl_ > change_ifaddr+0x390 > ifioctl(fffffd8746c878f8,8040691a,ffff8000248a3ce0,ffff80002487ab00) at > ifioctl > +0x988 > sys_ioctl(ffff80002487ab00,ffff8000248a3df0,ffff8000248a3e50) at > sys_ioctl+0x2c > 4 > syscall(ffff8000248a3ec0) at syscall+0x3d4 > Xsyscall() at Xsyscall+0x128 > end of kernel > end trace frame: 0x74aea7fb4da0, count: -12 > > systqmp is here, it may wait for the scheduler lock. > > ddb{0}> trace /t 0t408132 > sched_barrier_task(ffff8000248a39b8) at sched_barrier_task+0x7e > taskq_thread(ffffffff824ac758) at taskq_thread+0x100 > end trace frame: 0x0, count: -2 > > sensors thread seems to wait for scheduler lock, too. > > ddb{0}> trace /t 0t221411 > sched_peg_curproc(ffff80002253fff0) at sched_peg_curproc+0x69 > cpu_hz_update_sensor(ffff80002253fff0) at cpu_hz_update_sensor+0x21 > sensor_task_work(ffff800000366700) at sensor_task_work+0x48 > taskq_thread(ffff800000362100) at taskq_thread+0x100 > > ddb{0}> show struct __mp_lock sched_lock > struct sched_lock at 0xffffffff8250fa54 (520 bytes) {mpl_cpus = 10144565, > mpl_t > icket = 0x9acb36, mpl_users = 0x9acb35} > > systq is blocked by netlock > > ddb{0}> trace /t 0t210334 > sleep_finish(ffff8000247ab030,1) at sleep_finish+0x102 > rw_enter(ffffffff824a4fe8,1) at rw_enter+0x1cf > pf_purge(ffffffff824bb760) at pf_purge+0x38 > taskq_thread(ffffffff824ac708) at taskq_thread+0x100 > end trace frame: 0x0, count: -4 > > bluhm > >