Skip to content
This repository has been archived by the owner on Sep 2, 2018. It is now read-only.

Oracle JDK8 freezes #7

Closed
szarnyasg opened this issue Apr 26, 2015 · 1 comment
Closed

Oracle JDK8 freezes #7

szarnyasg opened this issue Apr 26, 2015 · 1 comment

Comments

@szarnyasg
Copy link
Member

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:

(OpenJDK7 and 8 behave similarly to Oracle JDK8, i.e. they freeze indeterministically as well).

@szarnyasg
Copy link
Member Author

For changing the default JVM, I used the following command:

sudo update-alternatives --config java

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant