title: Java thread dump: BLOCKED thread without "waiting to lock ..."
body: <p>I'm having difficulties in understanding the thread dump I got from jstack for a Spring MVC web application running on Tomcat 6 (java 1.6.0_22, Linux).</p>
  
  <p>I see blocking threads (that cause other threads to wait) which are blocked themselves, however the thread dump doesn't tell me why or for which monitor they are waiting.</p>
  
  <p>Example:</p>
  
  <pre><code>"TP-Processor75" daemon prio=10 tid=0x00007f3e88448800 nid=0x56f5 waiting for monitor entry [0x00000000472bc000]
      java.lang.Thread.State: BLOCKED (on object monitor)
          at java.lang.Class.initAnnotationsIfNecessary(Class.java:3067)
          - locked &lt;0x00007f3e9a0b3830&gt; (a java.lang.Class for org.catapultframework.resource.ResourceObject)
          at java.lang.Class.getAnnotation(Class.java:3029)
          ...
  </code></pre>
  
  <p>I.e. I am missing the "waiting to lock ..." line in the stack trace. Apparently the thread locks a Class object, but I don't see why the thread itself is blocked.</p>
  
  <p>The thread-dump does not contain any hints for deadlocks.</p>
  
  <p>What can I do to identify the locking monitor?</p>
  
  <p>Thanks,
  Oliver</p>