This repository was archived by the owner on Sep 2, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
This repository was archived by the owner on Sep 2, 2018. It is now read-only.
Oracle JDK8 freezes #7
Copy link
Copy link
Closed
Description
Oracle JDK8 freezes on some occasions, probably caused by a deadlock in the EMF. This affects both the generator and the benchmark projects.
The jstack trace provided by @tsdh for the benchmark:
--8<---------------cut here---------------start------------->8---
2015-03-26 22:17:26
Full thread dump OpenJDK 64-Bit Server VM (25.40-b23 mixed mode):
"Attach Listener" #10 daemon prio=9 os_prio=0 tid=0x00007f2304001000 nid=0x2e02 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"EMF Reference Cleaner" #9 daemon prio=5 os_prio=0 tid=0x00007f2348325000 nid=0x2df1 waiting on condition [0x00007f2330ef4000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006ef4edd80> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
at org.eclipse.emf.common.util.Pool$PoolEntry.clear(Pool.java:650)
at org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:71)
"Service Thread" #8 daemon prio=9 os_prio=0 tid=0x00007f2348188000 nid=0x2def runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007f2348183000 nid=0x2dee waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f2348181000 nid=0x2ded waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f234817e800 nid=0x2dec waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f234817d000 nid=0x2deb runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f2348144000 nid=0x2dea in Object.wait() [0x00007f23318f3000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000005400016b8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000005400016b8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f2348142000 nid=0x2de9 in Object.wait() [0x00007f23319f4000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
- locked <0x0000000540008bb8> (a java.lang.ref.Reference$Lock)
"main" #1 prio=5 os_prio=0 tid=0x00007f2348008800 nid=0x2de3 runnable [0x00007f2350e95000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.emf.common.util.Pool.addEntry(Pool.java:777)
at org.eclipse.emf.common.util.Pool.doIntern(Pool.java:959)
at org.eclipse.emf.common.util.SegmentSequence$SegmentSequencePool.intern(SegmentSequence.java:2664)
at org.eclipse.emf.common.util.SegmentSequence.create(SegmentSequence.java:2715)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.getEObject(ResourceImpl.java:742)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleForwardReferences(XMLHandler.java:1146)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.endDocument(XMLHandler.java:1235)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:745)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175)
at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:253)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406)
at hu.bme.mit.trainbenchmark.ttc.benchmark.emf.EMFBenchmarkCase.read(EMFBenchmarkCase.java:31)
at hu.bme.mit.trainbenchmark.ttc.benchmark.benchmarkcases.AbstractBenchmarkCase.benchmarkRead(AbstractBenchmarkCase.java:85)
at hu.bme.mit.trainbenchmark.ttc.benchmark.scenarios.ScenarioLogic.runBenchmark(ScenarioLogic.java:26)
at hu.bme.mit.trainbenchmark.ttc.benchmark.scenarios.AbstractBenchmarkLogic.runBenchmark(AbstractBenchmarkLogic.java:29)
at hu.bme.mit.trainbenchmark.ttc.benchmark.java.JavaBenchmarkMain.main(JavaBenchmarkMain.java:23)
"VM Thread" os_prio=0 tid=0x00007f234813d000 nid=0x2de8 runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f234801d800 nid=0x2de4 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f234801f000 nid=0x2de5 runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f2348021000 nid=0x2de6 runnable
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f2348022800 nid=0x2de7 runnable
"VM Periodic Task Thread" os_prio=0 tid=0x00007f234818a800 nid=0x2df0 waiting on condition
JNI global references: 36
--8<---------------cut here---------------end--------------->8---
I worked on reproducing the results on Ubuntu:
- https://gist.github.com/szarnyasg/f473629d36b63638535c -- Oracle JDK7, runs fine
- https://gist.github.com/szarnyasg/4df2986cf41424574d74 -- Oracle JDK8, some JVMs are killed by the
timeoutcommand - https://gist.github.com/szarnyasg/710c0ec9370e804eea90 -- Oracle JDK8 with
ReferenceClearingQueue=false, runs fine
(OpenJDK7 and 8 behave similarly to Oracle JDK8, i.e. they freeze indeterministically as well).
Metadata
Metadata
Assignees
Labels
No labels