Support Article
System crashes when tracer is run twice on same session
SA-16454
Summary
When tracer is run simultaneously by multiple developers, the system crashes.
Error Messages
The stack loops back to TraceEvent repeatedly.
java.lang.StackOverflowError
at com.pega.pegarules.priv.factory.IntArrayFactory.acquire(IntArrayFactory.java:88)
at com.pega.pegarules.pub.util.PRDateFormat.formatIDT(PRDateFormat.java:628)
at com.pega.pegarules.exec.internal.util.PRDateTimeUtilsImpl.getCurrentTimeStamp(PRDateTimeUtilsImpl.java:730)
at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.ctorCommon(TraceEventBaseImpl.java:241)
at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.<init>(TraceEventBaseImpl.java:237)
at com.pega.pegarules.monitor.internal.tracer.TraceEvent.<init>(TraceEvent.java:236)
at com.pega.pegarules.monitor.internal.tracer.TracerSessionImpl.logTraceEvent(TracerSessionImpl.java:571)
at com.pega.pegarules.session.internal.mgmt.Executable.logTraceEvent(Executable.java:1468)
at com.pega.pegarules.session.internal.mgmt.Executable.logTraceEvent(Executable.java:1454)
at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.trace(DeclarativePageDirectoryImpl.java:967)
at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.trace(DeclarativePageDirectoryImpl.java:958)
at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.isDeclarePageFresh(DeclarativePageDirectoryImpl.java:1037)
at com.pega.pegarules.session.internal.mgmt.base.handler.ReadOnlyDataPageHandler.findDataPage(ReadOnlyDataPageHandler.java:321)
at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.findDataPageInCurrentDir(AbstractPageDirectory.java:893)
at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.getDirectPage(AbstractPageDirectory.java:658)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getDirectPage(ThreadPageDir.java:473)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:431)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:423)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.getPage(PRThreadImpl.java:508)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2192)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2136)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.resolveEmbeddedPages(PropertyReferenceImpl.java:1817)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1392)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1372)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getIfPresent(PropertyReferenceImpl.java:1683)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getIfPresent(PropertyReferenceImpl.java:1670)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getIfPresent(ClipboardPageImpl.java:1203)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getIfPresent(ClipboardPageImpl.java:1146)
at com.pega.pegarules.data.internal.clipboard.ReferencePropertyLinkImpl.getSource(ReferencePropertyLinkImpl.java:386)
at com.pega.pegarules.data.internal.clipboard.ReferencePropertyLinkImpl.getSource(ReferencePropertyLinkImpl.java:318)
at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getReferenceString(ClipboardPropertyImpl.java:5352)
at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getReferenceString(ClipboardPropertyImpl.java:5342)
at com.pega.pegarules.data.internal.clipboard.WorkbenchXMLStream.writeXMLBeginProperty(WorkbenchXMLStream.java:463)
at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:929)
at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLPage(XMLStream.java:753)
at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:937)
at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:956)
at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLPage(XMLStream.java:753)
at com.pega.pegarules.data.internal.clipboard.XMLStream.clipboardToXML(XMLStream.java:499)
at com.pega.pegarules.data.internal.clipboard.WorkbenchXMLStream.<init>(WorkbenchXMLStream.java:216)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageBase.getXML(ClipboardPageBase.java:2148)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getXML(ClipboardPageImpl.java:481)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageBase.getXML(ClipboardPageBase.java:2133)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getXML(ClipboardPageImpl.java:481)
at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.getPageXML(TraceEventBaseImpl.java:1054)
at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.setPrimaryPage(TraceEventBaseImpl.java:997)
at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.setPrimaryPageData(TraceEventBaseImpl.java:822)
at com.pega.pegarules.monitor.internal.tracer.TraceEvent.<init>(TraceEvent.java:287)
at com.pega.pegarules.monitor.internal.tracer.TracerSessionImpl.logTraceEvent(TracerSessionImpl.java:571)
Steps to Reproduce
1. Have two developers log in
2. Start Tracer and connect to the same session
3. Start tracing
Root Cause
The root cause of this issue is operator error. The developers involved had tracer options enabled which were set at a level such that each developer's tracer utility was tracing the opposite developer's tracer utility, creating an infinite loop. This infinite loop crashed the server.
Resolution
Do not set your tracer to trace another user's tracer session. You should generally trace only what you need rather than tracing everything - such as limiting the tracer to specific rulesets.
Published January 31, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.