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.

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

Reply via email to