NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/57170: envstat uses uninterruptible system call



The following reply was made to PR kern/57170; it has been noted by GNATS.

From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: mayuresh%acm.org@localhost
Cc: gnats-bugs%NetBSD.org@localhost
Subject: Re: kern/57170: envstat uses uninterruptible system call
Date: Fri, 6 Jan 2023 15:42:49 +0000

 When envstat(8) is in this state, can you start crash(8) and get
 output from the following commands?
 
 crash> bt/t 0t12345          (where 12345 is the pid of envstat(8))
 crash> ps
 crash> ps/w
 
 And, in the ps/w output, find the line for the envstat(8) process,
 which should look something like this:
 
 PID   LID          COMMAND     EMUL  PRI WAIT-MSG    WAIT-CHANNEL
 6627  6627         envstat   netbsd   38 tstile      ffff830197ed0500
 
 Take the string of letters and digits at the end under WAIT-CHANNEL,
 which is the address of the lock it's waiting for, and paste it into
 this:
 
 crash> x/Lx ffff830197ed0500
 ffff830197ed0500:       ffff8302bfe94182
 
 Take the word it shows, ffff8302bfe94182, and clear the low nybble,
 giving ffff8302bfe94180, the address of the lwp which owns the lock,
 and pass that to bt/a:
 
 crash> bt/a ffff8302bfe94180
 
 This shows what that lwp is up to.
 
 If the owner ffff8302bfe94180 is also in tstile according to ps (or
 waiting in mutex_vector_enter according to bt/a), keep doing that --
 find the lock via WAIT-CHANNEL in ps/w, find the owner of the lock
 with x/Lx and clear the low nybble, look at bt/a and ps for that lwp,
 until you find something that's not in tstile.
 
 With any luck, this will tell us what driver is stuck and where.
 
 (Also we should find a way to make this diagnosis less painful.)
 


Home | Main Index | Thread Index | Old Index