Current-Users archive

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

New ddb command: show all tstiles



We often get reports of the form `system is hung with processes stuck
in tstile again, must be the same problem as <umpteen zillion issues
with symptoms matching that description>'.

Unfortunately, these are usually _not_ the same problem, or even
related in more than a superficial way, because `processes stuck in
tstile' just means `waiting for a lock'.  And there are myriad ways
the system might deadlock in that state -- totally independent locking
bugs in any subsystem can manifest that way.

Fortunately, there's a new ddb command to help track this down and
tease apart _which_ subsystems have locking bugs causing the tstiles:

show all tstiles
show all tstiles/t

This goes through each thread (lwp) that's waiting for a lock and
prints

(a) the lock address,
(b) if the lock is owned by another lwp, who owns it, and
(c) with the `/t' modifier, a stack trace of the owner.

And, unlike `show all locks', it works in non-LOCKDEBUG kernels, so if
a production system locks up, `show all tstiles' may still be useful.

So next time the system locks up with processes stuck in tstile, try
`show all tstiles/t' and see if that helps identify the deadlock!


Home | Main Index | Thread Index | Old Index