Dukascopy Bank ver. 2.26.6 / JForex API ver. 2.9.0.1 - Historical Tester -> onStart()During routine use of the historical tester, stopping and starting a strategy that opens 6 charts (
context.openChart(fd)) causes a
DEADLOCKinvolving the
"StrategyRunner Thread" and the
"AWT-EventQueue-0" thread.
Have had to issue
kill -9 PID over 20 times in the last 24 hours accommodating this re-occuring issue.
Thread Dump (
kill -3 PID) below for your information:
Found one Java-level deadlock:
=============================
"StrategyRunner Thread":
waiting to lock monitor 0x00007f6a3c136b78 (object 0x00000007827cb3e0, a java.awt.Component$AWTTreeLock),
which is held by "AWT-EventQueue-0"
"AWT-EventQueue-0":
waiting to lock monitor 0x000000000184ad80 (object 0x00000007833cfcd8, a java.lang.Class),
which is held by "StrategyRunner Thread"
Java stack information for the threads listed above:
===================================================
"StrategyRunner Thread":
at java.awt.Component.setFont(Component.java:1873)
- waiting to lock <0x00000007827cb3e0> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.setFont(Container.java:1743)
at javax.swing.JComponent.setFont(JComponent.java:2751)
at com.dukascopy.dds2.greed.gui.l10n.components.JLocalizableAnnotatedTable.ex(Unknown Source)
at com.dukascopy.dds2.greed.gui.l10n.LocalizationManager.a(Unknown Source)
- locked <0x00000007833cfcd8> (a java.lang.Class for com.dukascopy.dds2.greed.gui.l10n.LocalizationManager)
at com.dukascopy.dds2.greed.gui.l10n.components.JLocalizableAnnotatedTable.<init>(Unknown Source)
at com.dukascopy.charts.tablebuilder.component.table.DataTablePresentationAbstractJTable.<init>(Unknown Source)
at com.dukascopy.charts.tablebuilder.component.table.TickDataTablePresentationJTable.<init>(Unknown Source)
at com.dukascopy.charts.tablebuilder.j.xO(Unknown Source)
at com.dukascopy.charts.tablebuilder.j.xN(Unknown Source)
at com.dukascopy.charts.tablebuilder.j.xv(Unknown Source)
at com.dukascopy.charts.tablebuilder.a.xo(Unknown Source)
at com.dukascopy.charts.chartbuilder.i.hM(Unknown Source)
at com.dukascopy.charts.chartbuilder.i.hL(Unknown Source)
at com.dukascopy.charts.chartbuilder.i.gL(Unknown Source)
at com.dukascopy.charts.chartbuilder.s.gL(Unknown Source)
at com.dukascopy.charts.chartbuilder.b.gL(Unknown Source)
at com.dukascopy.charts.main.DDSChartsControllerImpl.c(Unknown Source)
at com.dukascopy.charts.main.DDSChartsControllerImpl.b(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.chart.d.d(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.chart.d.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.chart.d.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.tree.actions.k.K(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.tree.actions.ax.execute(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.tree.p.a(Unknown Source)
at com.dukascopy.dds2.greed.agent.strategy.tester.ao.aK(Unknown Source)
at com.dukascopy.dds2.greed.agent.strategy.tester.ao.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.dukascopy.dds2.greed.agent.strategy.tester.y.openChart(Unknown Source)
at quant.main.logic.strat1.onStart(strat1.java:2624) <===========================
at com.dukascopy.dds2.greed.agent.strategy.tester.v.run(Unknown Source)
at com.dukascopy.dds2.greed.agent.strategy.tester.b.a(Unknown Source)
at com.dukascopy.dds2.greed.actions.servicesources.StrategyTesterAction.Ci(Unknown Source)
at com.dukascopy.dds2.greed.actions.servicesources.StrategyTesterAction.BH(Unknown Source)
at com.dukascopy.dds2.greed.actions.c.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
"AWT-EventQueue-0":
at com.dukascopy.dds2.greed.gui.l10n.LocalizationManager.a(Unknown Source)
- waiting to lock <0x00000007833cfcd8> (a java.lang.Class for com.dukascopy.dds2.greed.gui.l10n.LocalizationManager)
at com.dukascopy.dds2.greed.gui.l10n.components.JLocalizableLabel.<init>(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.chart.toolbar.ChartToolBar$22.getListCellRendererComponent(Unknown Source)
at javax.swing.plaf.synth.SynthComboBoxUI.paintCurrentValue(SynthComboBoxUI.java:379)
at javax.swing.plaf.synth.SynthComboBoxUI.paint(SynthComboBoxUI.java:358)
at javax.swing.plaf.synth.SynthComboBoxUI.update(SynthComboBoxUI.java:326)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000007827cb3e0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000007827cb3e0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000007827cb3e0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked <0x00000007827cb3e0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Found 1 deadlock.
Heap
PSYoungGen total 335424K, used 47338K [0x00000007d5560000, 0x00000007eaab0000, 0x0000000800000000)
eden space 321856K, 12% used [0x00000007d5560000,0x00000007d7bae790,0x00000007e8fb0000)
from space 13568K, 59% used [0x00000007e8fb0000,0x00000007e979c3e0,0x00000007e9cf0000)
to space 13184K, 0% used [0x00000007e9dd0000,0x00000007e9dd0000,0x00000007eaab0000)
ParOldGen total 699072K, used 649206K [0x0000000780000000, 0x00000007aaab0000, 0x00000007d5560000)
object space 699072K, 92% used [0x0000000780000000,0x00000007a79fd9d8,0x00000007aaab0000)
PSPermGen total 49088K, used 49024K [0x000000077ae00000, 0x000000077ddf0000, 0x0000000780000000)
object space 49088K, 99% used [0x000000077ae00000,0x000000077dde0140,0x000000077ddf0000)
at quant.main.logic.strat1.onStart(strat1.java:2624)2609: fd = new FeedDescriptor();
2610: fd.setDataType(DataType.TIME_PERIOD_AGGREGATION);
2611: fd.setFilter(Filter.WEEKENDS);
2612: fd.setInstrument(myInstrument);
2613: fd.setOfferSide(OfferSide.BID);
2614: fd.setPeriod(Period.ONE_HOUR);
2616: charts[0] = context.openChart(fd);
2617:
2618: fd = new FeedDescriptor();
2619: fd.setDataType(DataType.TIME_PERIOD_AGGREGATION);
2620: fd.setFilter(Filter.WEEKENDS);
2621: fd.setInstrument(myInstrument);
2622: fd.setOfferSide(OfferSide.BID);
2623: fd.setPeriod(Period.THIRTY_MINS);
2624: charts[1] = context.openChart(fd); <===============================
..... and so on until charts[5]