On 2009-03-16, Ingo Weinhold <ingo_weinhold@xxxxxx> wrote: > > On 2009-03-15 at 20:08:56 [+0100], Jonas Sundström <jonas@xxxxxxxxxxx> > wrote: > > Ingo Weinhold <ingo_weinhold@xxxxxx> wrote: > > ... > > > it is not always known > > > which thread is holding a lock. > > > > If the kernel doesn´t know, how can locks work > > reliably, let alone be released when processes exit? > > Kernelland is a very controlled environment. Only kernel (proper) and > driver code is executed and that code has certain responsibilities. If a > function acquires a lock, it is also responsible for releasing it, > respectively there's a well-defined strategy how the lock is released (e.g. > some other called function does). > > There's only one point where a userland thread can die (regardless whether > it was caused by {exit,kill}_thread() or whatever), which is in the kernel > right before the thread would return to userland. At this point no kernel > locks are held. Kernel threads can only exit explicitly (via exit_thread()) > and it is the responsibility of that thread/code that no further kernel > locks are held at that time. Is there a document I can read about debugging locks? Because I can lock up MediaPlayer quite easily to the point where only a reboot fixes it. -- Cheers David