United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6535104 TEST_BUG: FindDeadlocks.java fails intermittently.
6535104 : TEST_BUG: FindDeadlocks.java fails intermittently.

Details
Type:
Bug
Submit Date:
2007-03-15
Status:
Resolved
Updated Date:
2012-02-02
Project Name:
JDK
Resolved Date:
2009-06-22
Component:
core-svc
OS:
generic
Sub-Component:
java.lang.management
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
6u4,7
Fixed Versions:
7

Related Reports

Sub Tasks

Description
Following test fails intermittently on solaris-sparc machine.

java/lang/management/ThreadMXBean/FindDeadlocks.java


Problem: The dead lock finding thread did not wait long enough
for the threads to reach dead lock. So the test case should
be fixed to wait longer than 100ms or  it should re-try
it in a loop for 10 or 20 times before it reports failure.
I think the re-entrant locks some times re-trys to acquire
lock and during the re-try the thread may not show up 
as blocked. So it is better to re-try to see if the 
threads have reached deadlock.

If you see the thread dump below of Deadlock-Threads you 
will see that the Deadlock-Thread-2 and Deadlock-Thread-1 
are still running in the reentrant lock code. 

Full Java thread dump

"Deadlock-Thread-3" Id=14 in WAITING on lock=java.util.concurrent.locks.ReentrantLock$NonfairSync bf2d5e
    owned by Deadlock-Thread-1 Id=12
   at sun.misc.Unsafe.park(Native Method)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:744)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:777)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1107)
   at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:185)
   at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261)
   at SynchronizerDeadlock$DeadlockingThread.g(SynchronizerDeadlock.java:95)
   at SynchronizerDeadlock$DeadlockingThread.f(SynchronizerDeadlock.java:88)
   at SynchronizerDeadlock$DeadlockingThread.run(SynchronizerDeadlock.java:81)

   Locked synchronizers: count = 1
      java.util.concurrent.locks.ReentrantLock$NonfairSync 1971afc

"Deadlock-Thread-2" Id=13 in RUNNABLE
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:744)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:777)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1107)
   at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:185)
   at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261)
   at SynchronizerDeadlock$DeadlockingThread.g(SynchronizerDeadlock.java:95)
   at SynchronizerDeadlock$DeadlockingThread.run(SynchronizerDeadlock.java:81)

   Locked synchronizers: count = 1
      java.util.concurrent.locks.ReentrantLock$NonfairSync 13bad12

"Deadlock-Thread-1" Id=12 in RUNNABLE
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:744)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:777)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1107)
   at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:185)
   at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261)
   at SynchronizerDeadlock$DeadlockingThread.g(SynchronizerDeadlock.java:95)
   at SynchronizerDeadlock$DeadlockingThread.f(SynchronizerDeadlock.java:88)
   at SynchronizerDeadlock$DeadlockingThread.run(SynchronizerDeadlock.java:81)

   Locked synchronizers: count = 1
      java.util.concurrent.locks.ReentrantLock$NonfairSync bf2d5e

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fb97068670e6
                                     
2009-05-27
EVALUATION

Retry to check the thread state before reporting test failure.
                                     
2009-05-27



Hardware and Software, Engineered to Work Together