> 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
> 
> 

Reply via email to