Re: Debugging kernel semaphore contention and priority inversion

From: Keith Mannthey
Date: Wed Aug 17 2005 - 18:34:20 EST


On 8/17/05, Davda, Bhavesh P (Bhavesh) <bhavesh@xxxxxxxxx> 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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/