I could look at the first deadlock by dumping locks and threads. I was planning to find the next one using Java Path Finder but I think it is not recommended for such a big codebase. I am not sure. Its heuristics might take too much memory.<div>
<br></div><div>Mohan<br><br><div class="gmail_quote">On Mon, Apr 9, 2012 at 3:59 AM,  <span dir="ltr"><<a href="mailto:mabrouk2005@gmail.com">mabrouk2005@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Nice exercise Dr Heinz,<br>
<br>
As others mentioned there were 2 kind of deadlocks the first one was<br>
very is easy to find via jconsole so likeI thought that was it and<br>
went and fixed that but then when ran it again it hang it so I knew<br>
thee was more. the interesting thing the jconsole did not detect the<br>
AWT deadlock it showed no deadlock even though the app hang. I had to<br>
force stack dump and get clues to where is the deadlock. Does anyone<br>
have experienced something like this with jconsole not detecting AWT<br>
deadlocks?<br>
<br>
Thanks again for the nice exercise and the great java news letter I am<br>
a big fan.<br>
<br>
Cheers,<br>
Mabrouk<br>
<div class="HOEnZb"><div class="h5"><br>
On Sat, Apr 7, 2012 at 7:42 AM, Remi Forax <<a href="mailto:forax@univ-mlv.fr">forax@univ-mlv.fr</a>> wrote:<br>
> No, it's more an AWRY or Java2D bug.<br>
><br>
> Rémi<br>
><br>
> Sent from my Phone<br>
><br>
><br>
> ----- Reply message -----<br>
> From: "Ben Evans" <<a href="mailto:benjamin.john.evans@gmail.com">benjamin.john.evans@gmail.com</a>><br>
> To: "Dr Heinz M. Kabutz" <<a href="mailto:heinz@javaspecialists.eu">heinz@javaspecialists.eu</a>><br>
> Cc: "Rémi Forax" <<a href="mailto:forax@univ-mlv.fr">forax@univ-mlv.fr</a>>, <<a href="mailto:concurrency-interest@cs.oswego.edu">concurrency-interest@cs.oswego.edu</a>><br>
> Subject: [concurrency-interest] Joint Talk for JavaOne?<br>
> Date: Sat, Apr 7, 2012 10:43<br>
><br>
><br>
> Heinz, was this with the new jdk8 + lambda build?<br>
><br>
> If so, we should report this crash back to lambda-dev.<br>
><br>
> Thanks,<br>
><br>
> Ben<br>
><br>
> On Sat, Apr 7, 2012 at 11:17 AM, Dr Heinz M. Kabutz<br>
> <<a href="mailto:heinz@javaspecialists.eu">heinz@javaspecialists.eu</a>> wrote:<br>
>> I see JDK8 crashes even with the vanilla Java2Demo from JDK 1.6.  I see<br>
>> that<br>
>> the Java2Demo has been removed from the demos folder of JDK 1.7 and 1.8.<br>
>>  It<br>
>> thus is a Java 8 issue, rather than the changes I made to the code.<br>
>>  Thanks<br>
>> for the warning Rémi.<br>
>><br>
>><br>
>> Regards<br>
>><br>
>> Heinz<br>
>> --<br>
>> Dr Heinz M. Kabutz (PhD CompSci)<br>
>> Author of "The Java(tm) Specialists' Newsletter"<br>
>> Sun Java Champion<br>
>> IEEE Certified Software Development Professional<br>
>> <a href="http://www.javaspecialists.eu" target="_blank">http://www.javaspecialists.eu</a><br>
>> Tel: +30 69 75 595 262<br>
>> Skype: kabutz<br>
>><br>
>><br>
>> On 4/6/12 1:51 AM, Rémi Forax wrote:<br>
>>><br>
>>> jdk8 crashes if I click on images of the tapped pane.<br>
>>><br>
>>> Rémi<br>
>>><br>
>>> On 04/05/2012 10:35 PM, Dr Heinz M. Kabutz wrote:<br>
>>>><br>
>>>> Yes, you are correct.<br>
>>>><br>
>>>> However, the mistake most programmers make is to #1 scratch around in<br>
>>>> the<br>
>>>> source code to try and discover the problem and #2 then fix it without<br>
>>>> really understanding what they are doing.  I think the lesson is bigger<br>
>>>> if<br>
>>>> we give them the source code.  In addition, it is probably more<br>
>>>> difficult to<br>
>>>> solve if you have the sources to muse over.<br>
>>>> Regards<br>
>>>><br>
>>>> Heinz<br>
>>>> --<br>
>>>> Dr Heinz M. Kabutz (PhD CompSci)<br>
>>>> Author of "The Java(tm) Specialists' Newsletter"<br>
>>>> Sun Java Champion<br>
>>>> IEEE Certified Software Development Professional<br>
>>>> <a href="http://www.javaspecialists.eu" target="_blank">http://www.javaspecialists.eu</a><br>
>>>> Tel: +30 69 75 595 262<br>
>>>> Skype: kabutz<br>
>>>><br>
>>>><br>
>>>> On 4/5/12 11:30 PM, Nathan Reynolds wrote:<br>
>>>>><br>
>>>>> I guess it is a good idea to not initially include the source code in<br>
>>>>> the workshop because many times I initially don't have the source code<br>
>>>>> when<br>
>>>>> trying to figure out performance or scalability problems.<br>
>>>>><br>
>>>>> Nathan Reynolds<br>
>>>>> <<a href="http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds" target="_blank">http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds</a>> |<br>
>>>>> Consulting<br>
>>>>> Member of Technical Staff | 602.333.9091<br>
>>>>> Oracle PSR Engineering <<a href="http://psr.us.oracle.com/" target="_blank">http://psr.us.oracle.com/</a>> | Server Technology<br>
>>>>><br>
>>>>> On 4/5/2012 1:22 PM, Dr Heinz M. Kabutz wrote:<br>
>>>>>><br>
>>>>>> Sorry Nathan, here is the zip file including the source code an an Ant<br>
>>>>>> script to build the code.  Sorry for accidentally excluding that from<br>
>>>>>> the<br>
>>>>>> file I sent earlier.  The problem was between the chair and the<br>
>>>>>> keyboard.<br>
>>>>>>  However, one should be able to pinpoint the deadlock without seeing a<br>
>>>>>> line<br>
>>>>>> of code.  At the workshop I presented in Spain last week, most of the<br>
>>>>>> programmers immediately started delving into the code before they knew<br>
>>>>>> where<br>
>>>>>> to look.<br>
>>>>>> Regards<br>
>>>>>><br>
>>>>>> Heinz<br>
>>>>>> --<br>
>>>>>> Dr Heinz M. Kabutz (PhD CompSci)<br>
>>>>>> Author of "The Java(tm) Specialists' Newsletter"<br>
>>>>>> Sun Java Champion<br>
>>>>>> IEEE Certified Software Development Professional<br>
>>>>>> <a href="http://www.javaspecialists.eu" target="_blank">http://www.javaspecialists.eu</a><br>
>>>>>> Tel: +30 69 75 595 262<br>
>>>>>> Skype: kabutz<br>
>>>>>><br>
>>>>>> On 4/5/12 10:29 PM, Nathan Reynolds wrote:<br>
>>>>>>><br>
>>>>>>> I took the bait and tried out the demo on HotSpot 7 Update 3.  It<br>
>>>>>>> didn't deadlock for a minute or two.  Then the application froze.  I<br>
>>>>>>> then<br>
>>>>>>> used jstack to dump the call stacks.  At the end of the report, it<br>
>>>>>>> said<br>
>>>>>>> "Found one Java-level deadlock".  It then dumped out the locks and<br>
>>>>>>> threads<br>
>>>>>>> involved in the deadlock.  I never looked at the source code... in<br>
>>>>>>> fact it<br>
>>>>>>> wasn't in the zip file.  This took about 5-7 minutes from starting<br>
>>>>>>> the<br>
>>>>>>> application to finding the deadlock in the call stacks.<br>
>>>>>>><br>
>>>>>>> A 100 good Java developers?  Really?  I guess I can understand.  Most<br>
>>>>>>> engineers don't understand locks.  Most of the time I get answers<br>
>>>>>>> like one<br>
>>>>>>> should put a lock around shared variables.  This is accurate but they<br>
>>>>>>> can't<br>
>>>>>>> really go any deeper.<br>
>>>>>>><br>
>>>>>>> It sounds like the material of your presentation should be very good.<br>
>>>>>>>  It covers things that the deadlock detection tool probably can't<br>
>>>>>>> figure<br>
>>>>>>> out.<br>
>>>>>>><br>
>>>>>>> So, it seems like you have everything figured out.  Why do you need<br>
>>>>>>> someone else?<br>
>>>>>>><br>
>>>>>>> Nathan Reynolds<br>
>>>>>>> <<a href="http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds" target="_blank">http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds</a>> |<br>
>>>>>>> Consulting<br>
>>>>>>> Member of Technical Staff | 602.333.9091<br>
>>>>>>> Oracle PSR Engineering <<a href="http://psr.us.oracle.com/" target="_blank">http://psr.us.oracle.com/</a>> | Server<br>
>>>>>>> Technology<br>
>>>>>>><br>
>>>>>>> On 4/5/2012 12:03 PM, Dr Heinz M. Kabutz wrote:<br>
>>>>>>>><br>
>>>>>>>> Hi Nathan,<br>
>>>>>>>><br>
>>>>>>>> a stack trace will only show you a certain class of obvious<br>
>>>>>>>> deadlocks<br>
>>>>>>>> that are easy to find and solve.  I remember solving deadlocks<br>
>>>>>>>> /before/ we<br>
>>>>>>>> had the brilliant deadlock detection tool in the ThreadMXBean.  Yes,<br>
>>>>>>>> the<br>
>>>>>>>> deadlock detection tool shows you /some/ deadlocks, but definitely<br>
>>>>>>>> not all<br>
>>>>>>>> of them.  I can think of a bunch that it would not find:<br>
>>>>>>>><br>
>>>>>>>> 1. Semaphores running out of permits<br>
>>>>>>>> 2. ReadWriteLocks trying to upgrade from write lock to read lock<br>
>>>>>>>> 3. Resource deadlocks<br>
>>>>>>>><br>
>>>>>>>> And some others that I will not describe in detail, such as some<br>
>>>>>>>> nasty livelocks that we can cause which will hang up the JVM :-)<br>
>>>>>>>><br>
>>>>>>>> I agree with Kirk - it should probably be a 3 hour workshop.  I've<br>
>>>>>>>> done this three times now - twice in Spain and once via webinar.<br>
>>>>>>>>  The<br>
>>>>>>>> workshop would involve some lessons on deadlocks, what causes them<br>
>>>>>>>> and how<br>
>>>>>>>> we can prevent them.  Also an explanation as to why we see them so<br>
>>>>>>>> seldom in<br>
>>>>>>>> real production.  I've got material prepared for this workshop.  And<br>
>>>>>>>> then a<br>
>>>>>>>> practical part to the workshop where they can try to find a deadlock<br>
>>>>>>>> in a<br>
>>>>>>>> body of code.<br>
>>>>>>>><br>
>>>>>>>> Attached is an example of the workshop.  You can try find the<br>
>>>>>>>> deadlock if you like.  I've shown it to almost 100 good Java<br>
>>>>>>>> developers and<br>
>>>>>>>> so far, not one has found it by themselves.  I would expect that<br>
>>>>>>>> they should<br>
>>>>>>>> find it in 5 minutes.  In our workshop they would obviously be<br>
>>>>>>>> helped a bit<br>
>>>>>>>> with hints, so that they can walk away with a good experience.  Use<br>
>>>>>>>> anything<br>
>>>>>>>> you like.  Oscilloscope, jstack, jconsole, whatever you like.  Only<br>
>>>>>>>> rule for<br>
>>>>>>>> you guys on the "concurrency-interest" list is: you can only look at<br>
>>>>>>>> the<br>
>>>>>>>> code once you've found the problem, otherwise it would be too easy<br>
>>>>>>>> for you<br>
>>>>>>>> :-)  Once you have found it, you can also fix the code and make sure<br>
>>>>>>>> that<br>
>>>>>>>> the code then works correctly.<br>
>>>>>>>> Regards<br>
>>>>>>>><br>
>>>>>>>> Heinz<br>
>>>>>>>> --<br>
>>>>>>>> Dr Heinz M. Kabutz (PhD CompSci)<br>
>>>>>>>> Author of "The Java(tm) Specialists' Newsletter"<br>
>>>>>>>> Sun Java Champion<br>
>>>>>>>> IEEE Certified Software Development Professional<br>
>>>>>>>> <a href="http://www.javaspecialists.eu" target="_blank">http://www.javaspecialists.eu</a><br>
>>>>>>>> Tel: +30 69 75 595 262<br>
>>>>>>>> Skype: kabutz<br>
>>>>>>>><br>
>>>>>>>> On 4/5/12 8:01 PM, Nathan Reynolds wrote:<br>
>>>>>>>>><br>
>>>>>>>>> I am curious as to the intended content of your presentation.<br>
>>>>>>>>>  Here's some ideas.  I wondering what you are planing on doing.<br>
>>>>>>>>><br>
>>>>>>>>>  1. Printing the call stacks with lock information using a tool<br>
>>>>>>>>>    such as jstack<br>
>>>>>>>>>  2. Press the "Detect Deadlock" button in JConsole<br>
>>>>>>>>>  3. Dealing with Lock and Condition objects instead of<br>
>>>>>>>>>    synchronized blocks<br>
>>>>>>>>>  4. Detecting live lock<br>
>>>>>>>>>  5. Distributed deadlocks<br>
>>>>>>>>><br>
>>>>>>>>> Nathan Reynolds<br>
>>>>>>>>> <<a href="http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds" target="_blank">http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds</a>> |<br>
>>>>>>>>> Consulting<br>
>>>>>>>>> Member of Technical Staff | 602.333.9091<br>
>>>>>>>>> Oracle PSR Engineering <<a href="http://psr.us.oracle.com/" target="_blank">http://psr.us.oracle.com/</a>> | Server<br>
>>>>>>>>> Technology<br>
>>>>>>>>><br>
>>>>>>>>> On 4/5/2012 7:57 AM, Dr Heinz M. Kabutz wrote:<br>
>>>>>>>>>><br>
>>>>>>>>>> Good afternoon,<br>
>>>>>>>>>><br>
>>>>>>>>>> I am thinking of submitting a talk on finding and diagnosing<br>
>>>>>>>>>> deadlocks for JavaOne.  It might be a workshop, instead of a<br>
>>>>>>>>>> simple<br>
>>>>>>>>>> conference talk.  Or we might be able to turn the talk into a<br>
>>>>>>>>>> workshop where<br>
>>>>>>>>>> they need to find a deadlock in a body of code.  Could be<br>
>>>>>>>>>> something<br>
>>>>>>>>>> different, which might go incredibly well or crash in a blaze of<br>
>>>>>>>>>> flames.<br>
>>>>>>>>>>  Would any of you be interested in co-presenting this with me at<br>
>>>>>>>>>> JavaOne?<br>
>>>>>>>>>><br>
>>>>>>>>>> Regards<br>
>>>>>>>>>><br>
>>>>>>>>>> Heinz<br>
>>>><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Concurrency-interest mailing list<br>
>>>> <a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
>>>> <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Concurrency-interest mailing list<br>
>>> <a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
>>> <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
>>><br>
>> _______________________________________________<br>
>> Concurrency-interest mailing list<br>
>> <a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
>> <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
><br>
> _______________________________________________<br>
> Concurrency-interest mailing list<br>
> <a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
> <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
><br>
<br>
_______________________________________________<br>
Concurrency-interest mailing list<br>
<a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
<a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
</div></div></blockquote></div><br></div>