Re: Debugging kernel semaphore contention and priority inversion

Keith Mannthey
2005-08-17T23:33:15Z

On 8/17/05, Davda, Bhavesh P (Bhavesh) <bhavesh@avaya.com> wrote:
> Is there a way to know which task has a particular (struct semaphore *)
> down()ed, leading to another task's down() blocking on it?

I would add a field to struct semaphore that tracks the current process.
In your various up and downs have that field tracks the "current" process.

Do you know what semaphore it is?

This way you dump the semaphore you can see what task it is holding
it. Have the module dump the semaphore and you can id the task

> It would be helpful to get a kernel stacktrace for the culprit too.

Have you tried sysrq t? See the Documentation/sysrq.txt file.

How stuck is the system?

Keith