java - Is it possible for ConcurrentHashMap to "deadlock"? -


We have come up with a strange issue with concurrent hips , where two threads begin to call < Code> put () , and then waits for forever within the law Unsafe.park () . From outside, it looks like a deadlock inside concurrenthashmap .

We have only seen it like this once.

Can anybody think of this because of these symptoms

edit : The thread dump is here for relevant thread:

< Pre> "[modified] thread 2" prio = 10 tid = 0x000000005bbbc800 nid = 0x921 condition [0x0000000040e93000] waiting on java.lang.Thread.State: wait (parking) sun.misc.Unsafe.park (Native resident method) Waiting on - parking & lt; 0x00002aaaf1207b40 & gt; (Java.util.concurrent.locks.RententLock $ NonfairSync) at java.util.concurrent.locks.LockSupport.park (LockSupport.java158) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (Abstractquinded Synchronizer. Java: 747) Java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued at (abstractQueuedSynchronizer.java:778) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1114) at java.util.concurrent.locks.ReentrantLock $ NonfairSync on .lock java.util.concurrent.locks.ReentrantLock.lock (ReentrantLock.java:262) (ReentrantLock.java:186) java on java.util.concurrent.ConcurrentHashMap $ Segment.put (ConcurrentHashMap.java:417). (ConcurrentHashMap.java:883) [Modified] "[Modified] Thread 0" prio = 10 TID = 0x000000005bf38000 at util.concurrent.ConcurrentHashMap.put Naidi = 0x91f condition [0x000000004151d000] waiting on java.lang.Thread.State: to wait in the sun (parking). Mesc.Unsafe.park (Net Ive Method) - & lt; 0x00002aaaf1207b40 & gt; To wait for parking (Java.util.concurrent.locks.RententLock $ NonfairSync) on java.util.concurrent.locks.LockSupport.park on (LockSupport.java158) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (for AbstractQualized Synchronizer. Java: 747) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued at (abstractQueuedSynchronizer.java:778) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1114) java.util.concurrent at $ NonfairSync.lock java.util.concurrent.locks.ReentrantLock.lock (ReentrantLock.java:262) on .locks.ReentrantLock (ReentrantLock.java:186) on java.util.concurrent.ConcurrentHashMap $ Segment.put (ConcurrentHashMap. java: 417) (ConcurrentHashMap.java:883) on java.util.concurrent.ConcurrentHashMap.put [Revised] might

If you want to answer, but it can be a JVM bug.


Comments