<br><div class="gmail_quote">On Thu, Sep 1, 2011 at 3:05 AM, Venkatram Tummala <span dir="ltr">&lt;<a href="mailto:venkatram867@gmail.com">venkatram867@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><div class="im">On Wed, Aug 31, 2011 at 2:17 PM, Daniel Baluta <span dir="ltr">&lt;<a href="mailto:daniel.baluta@gmail.com" target="_blank">daniel.baluta@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


Hello,<br>
<div><div></div><div>&gt; i wrote a linux kernel module which uses mmap_sem in lots of places. I grab<br>
&gt; mmap_sem for both reads &amp; writes.  And, i also use page_table_lock spinlock<br>
&gt; under them. The problem i have is that there is a hard to reproduce a race<br>
&gt; condition bug in which a thread doesn&#39;t release the semaphore at all. Hence,<br>
&gt; ps hangs as ps needs to grab mmap_sem for the processes. The question is how<br>
&gt; do i find the thread that is holding the semaphore forever. It will help me<br>
&gt; figure out the part of the code the race is in.<br>
&gt; So, the question is : I have some number of threads grabbing the semaphore<br>
&gt; for read/write. One of them grabs it &amp; doesn&#39;t release at all. How do i find<br>
&gt; the thread that is holding it. This is not a soft lockup &amp; i dont get any<br>
&gt; hung_task_timeout messages.<br>
&gt; Any help is appreciated.<br>
<br>
</div></div>You could turn on lockdep (LOCKDEP_SUPPORT=y),<br>
and see if any warnings are triggered.<br></blockquote></div><div>LOCKDEP_SUPPORT is turned on in my kernel but I dont see any warnings. </div><div><br></div></div></blockquote><div> </div><div>Hi Venkatram,<br><br>Probably you could try using &#39;make menuconfig&#39; before building the kernel and enabling some of the lockdep related stuff under the kernel hacking section.<br>
There might be more config options necessary to be set in order to make use of lockdep than just LOCKDEP_SUPPORT. <br>The above method will help you enable all the necessary options.<br><br>Regards,<br>Srivatsa S. Bhat <br>
</div></div>